![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как отличить тип колонки int от float
Kinder © (2007-10-15 19:23:00)База Данных Oracle10g, возвращается ref cursor из процедуры.
Все колонки типа NUMBER преобразуются во float - OK.
Но если у меня интовое поле, то оно всё равно преобразуется в float.Как можно отличить int от number. Досадно выводить дробную часть у целого, по определению, числа.
Reindeer Moss Eater (2007-10-18 17:46:00) [1]Камень в основном один. Разный диапазон Integer в паскале и оракле.
То, что в оракле будет положительным целым, в паскале может оказаться отрицательным
Kinder (2007-10-18 17:42:00) [2]Reindeer Moss Eater © - 5 балов.
Интересно только нет ли камней при этом(я просто не понимаю как отличает в таком случае, но работает, пока, это факт).
Игорь Шевченко (2007-10-17 14:33:00) [3]
> Как можно отличить int от number.
TFloatField.Precision не поможет ?
Reindeer Moss Eater (2007-10-17 14:11:00) [4]надо включить в БДЕ "Enable Integers" тогда будет ftInteger
Kinder (2007-10-17 13:33:00) [5]не думаю Desdechado ©, что это ошибка, так как пытаться получить точный тип налету было бы не верно, грубо говоря это сказалось бы на производительности сильно.
Всем спасибо за участие.
ps:будем искать другие варианты.
Desdechado (2007-10-17 12:00:00) [6]БДЕ не сертифицирован для Оракла больше восьмерки.
Однако в некоторых случаях даже заточенными компонентами типа ODAC не получается добыть верный тип поля, т.к. сам Оракл его возвращает с ошибкой.
Например, в запросе X будет просто NUMBER, хотя в Y поле NUMBER(5)
SELECT x FROM y WHERE x < 0
UNION ALL
SELECT 1 FROM y WHERE x > 0
PS у меня 9.2
Kinder (2007-10-17 11:19:00) [7]Desdechado © "Многое зависит от используемых компонентов доступа" - это правда.Работаем через BDE и столкнулись с этой проблемой. Разве никто не не наступал на эти грабли?
to Val : Если в Oracle вы напишите NUMBER(1) , то для BDE - это float. precision вообще не возвращается. Scale - возвращется.
Если я в чём то не прав, просьба поправить.
Val (2007-10-16 13:28:00) [8]Без дробной части. Я об этом:
When you specify numeric fields, it is a good idea to specify the precision and scale. This provides extra integrity checking on input.
Desdechado (2007-10-16 11:14:00) [9]Это всего лишь псевдонимы (для совместимости с ANSI datatypes) для NUMBER(38)
Val (2007-10-16 11:10:00) [10]спасибо, я это уже читал. и это лишь подтверждает написанное мной.
Desdechado (2007-10-16 10:59:00) [11]Многое зависит от используемых компонентов доступа.
Val © (15.10.07 23:01) [1]
Use NUMBER subtypes INTEGER, INT, and SMALLINT to declare integers with a maximum precision of 38 decimal digits.
Val (2007-10-15 23:01:00) [12]"интовое поле" - не number