Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3   вперед  Ctrl      все
 Re: Недопустимые данные для типа "numeric" c линкед Oracle  [new]
hosTuk
Member

Откуда:
Сообщений: 455
Glory,

По умолчанию, максимальная точность типов данных numeric и decimal составляет 38 разрядов. В Transact-SQL тип данных numeric функционально эквивалентен типу данных decimal.


Вы утверждаете, что MS SQL Server не может перевести числа в диапазоне [15;313] в numeric?

Не надо никаких [рукалицо] и слепых.
19 янв 11, 14:56    [10097132]     Ответить | Цитировать Сообщить модератору
 Re: Недопустимые данные для типа "numeric" c линкед Oracle  [new]
Glory
Member

Откуда:
Сообщений: 104760
hosTuk

Вы утверждаете, что MS SQL Server не может перевести числа в диапазоне [15;313] в numeric?

Ну ка переведите мне число 1 в numeric c точностью 38
19 янв 11, 15:04    [10097215]     Ответить | Цитировать Сообщить модератору
 Re: Недопустимые данные для типа "numeric" c линкед Oracle  [new]
hosTuk
Member

Откуда:
Сообщений: 455
Glory,

А это что

declare @a numeric(38, 0)
set @a = 1
select @a

19 янв 11, 15:13    [10097298]     Ответить | Цитировать Сообщить модератору
 Re: Недопустимые данные для типа "numeric" c линкед Oracle  [new]
Glory
Member

Откуда:
Сообщений: 104760
hosTuk
Glory,

А это что

declare @a numeric(38, 0)
set @a = 1
select @a


И где вы увидели, что в вашем запросе к линкед серверу тип данных поля будет numeric(38, 0) ?
И откуда цитата то ?
В хелпе про тип numeric сказано
Numeric data types that have fixed precision and scale.

decimal[ (p[ , s] )] and numeric[ (p[ , s] )]
Fixed precision and scale numbers. When maximum precision is used, valid values are from - 10^38 +1 through 10^38 - 1. The ISO synonyms for decimal are dec and dec(p, s). numeric is functionally equivalent to decimal.

p (precision)
The maximum total number of decimal digits that can be stored, both to the left and to the right of the decimal point. The precision must be a value from 1 through the maximum precision of 38. The default precision is 18.

s (scale)
The maximum number of decimal digits that can be stored to the right of the decimal point. Scale must be a value from 0 through p. Scale can be specified only if precision is specified. The default scale is 0; therefore, 0 <= s <= p. Maximum storage sizes vary, based on the precision.
19 янв 11, 15:19    [10097355]     Ответить | Цитировать Сообщить модератору
 Re: Недопустимые данные для типа "numeric" c линкед Oracle  [new]
hosTuk
Member

Откуда:
Сообщений: 455
Glory,

Согласен в линкед я не знаю к какой точности numeric мс скл преобразует. Получается, что берется нумерик с недостаточной точностью.
Цитата из русского бола версии 9.00.3212
19 янв 11, 15:34    [10097514]     Ответить | Цитировать Сообщить модератору
 Re: Недопустимые данные для типа "numeric" c линкед Oracle  [new]
hosTuk
Member

Откуда:
Сообщений: 455
hosTuk,

Ну и к тому же точности 18 хватает для преобразования моего максимального числа
19 янв 11, 15:35    [10097520]     Ответить | Цитировать Сообщить модератору
 Re: Недопустимые данные для типа "numeric" c линкед Oracle  [new]
iljy
Member

Откуда:
Сообщений: 8711
hosTuk,

а какие еще поля и каких типов есть в оракловой таблице? И что скажет скрипт
select * from openquery(OracleServer,
'
select 
    ghhea_heat as NumPlavka
from "DBP0298-EAF02"."TB_STWK_GH_HEA"
')
19 янв 11, 15:38    [10097554]     Ответить | Цитировать Сообщить модератору
 Re: Недопустимые данные для типа "numeric" c линкед Oracle  [new]
Konst_One
Member

Откуда:
Сообщений: 11538
если у вас в таблице оракла действительно указан тип INTEGER для данног поля, то в MSSQL-сервере всё было бы нормально. проверьте ещё раз, напрямую, а не как вы там что-то в какой-то тулзе запускали.
19 янв 11, 15:39    [10097567]     Ответить | Цитировать Сообщить модератору
 Re: Недопустимые данные для типа "numeric" c линкед Oracle  [new]
hosTuk
Member

Откуда:
Сообщений: 455
iljy,

Сообщение 9803, уровень 16, состояние 1, строка 2
Недопустимые данные для типа "numeric".
19 янв 11, 15:44    [10097614]     Ответить | Цитировать Сообщить модератору
 Re: Недопустимые данные для типа "numeric" c линкед Oracle  [new]
hosTuk
Member

Откуда:
Сообщений: 455
Konst_One,

на прямую, это чем?
или посмотреть в системных представлениях оракла?
19 янв 11, 15:45    [10097626]     Ответить | Цитировать Сообщить модератору
 Re: Недопустимые данные для типа "numeric" c линкед Oracle  [new]
Glory
Member

Откуда:
Сообщений: 104760
hosTuk
hosTuk,

Ну и к тому же точности 18 хватает для преобразования моего максимального числа

Еще раз вопрос для неслепых - как вы узнали тип поля, в которое будет преобразовано поле из Oracle ?
19 янв 11, 15:46    [10097637]     Ответить | Цитировать Сообщить модератору
 Re: Недопустимые данные для типа "numeric" c линкед Oracle  [new]
Konst_One
Member

Откуда:
Сообщений: 11538
hosTuk
Konst_One,

на прямую, это чем?
или посмотреть в системных представлениях оракла?


оракловыми средствами, например sqlplus
19 янв 11, 15:47    [10097643]     Ответить | Цитировать Сообщить модератору
 Re: Недопустимые данные для типа "numeric" c линкед Oracle  [new]
hosTuk
Member

Откуда:
Сообщений: 455
Есть float(126), VARCHAR2(20 BYTE) , DATE
19 янв 11, 15:49    [10097667]     Ответить | Цитировать Сообщить модератору
 Re: Недопустимые данные для типа "numeric" c линкед Oracle  [new]
hosTuk
Member

Откуда:
Сообщений: 455
Glory
hosTuk
hosTuk,

Ну и к тому же точности 18 хватает для преобразования моего максимального числа

Еще раз вопрос для неслепых - как вы узнали тип поля, в которое будет преобразовано поле из Oracle ?


Никак не узнал, а можно узнать?
19 янв 11, 15:50    [10097679]     Ответить | Цитировать Сообщить модератору
 Re: Недопустимые данные для типа "numeric" c линкед Oracle  [new]
Konst_One
Member

Откуда:
Сообщений: 11538
float(126)!!!!

вот и результат. делайте явное преобразование на оракловой стороне
19 янв 11, 15:51    [10097694]     Ответить | Цитировать Сообщить модератору
 Re: Недопустимые данные для типа "numeric" c линкед Oracle  [new]
Glory
Member

Откуда:
Сообщений: 104760
exec sp_columns_ex 'OracleServer', 'TB_STWK_GH_HEA', 'DBP0298-LF02'
19 янв 11, 15:57    [10097754]     Ответить | Цитировать Сообщить модератору
 Re: Недопустимые данные для типа "numeric" c линкед Oracle  [new]
hosTuk
Member

Откуда:
Сообщений: 455
Konst_One,

Ошибочка вышла, это я iljy отвечал, про то какие еще типы есть в таблице.
Проблемные поля с типами integer.

Сейчас будут искать, как посмотреть тип данных в системных представлениях.
19 янв 11, 15:58    [10097764]     Ответить | Цитировать Сообщить модератору
 Re: Недопустимые данные для типа "numeric" c линкед Oracle  [new]
hosTuk
Member

Откуда:
Сообщений: 455
Glory
exec sp_columns_ex 'OracleServer', 'TB_STWK_GH_HEA', 'DBP0298-LF02'


Спасибо.
Пардон что без заголовков.

NULL	DBP0298-LF02	TB_STWK_GH_HEA	GHHEA_HEAT	2	NUMBER	38	40	0	10	0	NULL	NULL	2	NULL	NULL	2	NO	108
19 янв 11, 16:24    [10098075]     Ответить | Цитировать Сообщить модератору
 Re: Недопустимые данные для типа "numeric" c линкед Oracle  [new]
Konst_One
Member

Откуда:
Сообщений: 11538
NUMBER 38 40
19 янв 11, 16:40    [10098300]     Ответить | Цитировать Сообщить модератору
 Re: Недопустимые данные для типа "numeric" c линкед Oracle  [new]
hosTuk
Member

Откуда:
Сообщений: 455
Konst_One,

А можем передать только 38 для типа number, так?
19 янв 11, 16:49    [10098390]     Ответить | Цитировать Сообщить модератору
 Re: Недопустимые данные для типа "numeric" c линкед Oracle  [new]
Glory
Member

Откуда:
Сообщений: 104760
hosTuk

А можем передать только 38 для типа number, так?

Вы опять не понимаете сути вещей
Это то, как MSSQL видит ваши поля в Orаcle
А не то, как вы ему задаете конветировать их
19 янв 11, 16:54    [10098467]     Ответить | Цитировать Сообщить модератору
 Re: Недопустимые данные для типа "numeric" c линкед Oracle  [new]
Alx65
Member

Откуда: МО
Сообщений: 402
Alx65
Попробуйте так

SELECT CAST([GHHEA_ID] AS INT)
     
  FROM [OracleServer]..[DBP0298-LF02].[TB_STWK_GH_HEA]

или

SELECT CAST([GHHEA_ID] AS VARCHAR)
     
  FROM [OracleServer]..[DBP0298-LF02].[TB_STWK_GH_HEA]


Еще раз - какой результат?
19 янв 11, 16:56    [10098495]     Ответить | Цитировать Сообщить модератору
 Re: Недопустимые данные для типа "numeric" c линкед Oracle  [new]
hosTuk
Member

Откуда:
Сообщений: 455
Glory,

я имел ввиду что тип имеет разрядность 38, но при передаче ms sql ему нужно передать 40, поэтому и происходит ошибка, так?
19 янв 11, 17:58    [10098988]     Ответить | Цитировать Сообщить модератору
 Re: Недопустимые данные для типа "numeric" c линкед Oracle  [new]
hosTuk
Member

Откуда:
Сообщений: 455
Alx65,

ошибка, а какая сейчас уже не скажу; уже не на работе.
19 янв 11, 17:59    [10098998]     Ответить | Цитировать Сообщить модератору
 Re: Недопустимые данные для типа "numeric" c линкед Oracle  [new]
Konst_One
Member

Откуда:
Сообщений: 11538
hosTuk
Glory,

я имел ввиду что тип имеет разрядность 38, но при передаче ms sql ему нужно передать 40, поэтому и происходит ошибка, так?

нет не так, вы неправильно понимаете. заголовки посмотрите у тех полей , где вы видите циферки 38 и 40 в вашем результате выполнения прорцедуры, которую вам поссоветовал Glory выполнить. И может быть вас осенит.
19 янв 11, 18:00    [10099003]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить