Форум: "Базы";
Текущий архив: 2004.07.04;
Скачать: [xml.tar.bz2];
Внизчисловые типы в Оракле - что выбрать? Найти похожие ветки
← →
Вольный Стрелок © (2004-06-08 12:52) [0]Люди, поделитесь опытом.
У меня есть БД на Interbase, которую надо перевести на Oracle, но при этом клиентские программы должны иметь возможность работать с любой из этих СУБД.
Для чисел в IB используются INTEGER, SMALLINT и FLOAT.
Клиентские приложения написаны на Delphi7 с использованием dbExpress. В коде используются persistent-определения полей, т.е. TIntegerField и т.п.
Хочется как можно меньше вносить изменений в эти вещи, т.к. там все отлажено.
Oracle-типы для чисел dbExpress видит как BCD или FMTBCD.
Вопрос: как все-таки лучше поступить с портированием типов? Чем на клиенте BCD лучше Integer?
← →
Sandman25 © (2004-06-08 12:54) [1]BCD и FMTBCD - это для Decimal.
Если поле в БД выглядит как Integer, то и в Delphi оно останется IntegerField
← →
Курдль © (2004-06-08 13:27) [2]
> Если поле в БД выглядит как Integer, то и в Delphi оно останется
> IntegerField
Integer в Оракле - это 32 байта! У кого-то харя может треснуть! :)
Так что надо исходить из реалий. Например:
Целые - NUMBER(16)
Денежные - NUMBER(20,4)
← →
Sandman25 © (2004-06-08 13:54) [3]>Integer в Оракле - это 32 байта!
Не знал.
← →
Johnmen © (2004-06-08 14:00) [4]>Курдль © (08.06.04 13:27) [2]
>Integer в Оракле - это 32 байта!
Можно ссылку на источник ?
:)
← →
bushmen © (2004-06-08 14:07) [5]>Курдль © (08.06.04 13:27) [2]
>Integer в Оракле - это 32 байта!
Что-то не помню такого.
>Так что надо исходить из реалий. Например:
>Целые - NUMBER(16)
>Денежные - NUMBER(20,4)
Не многовато ли для денежных сумм ?
← →
DenK_vrtz © (2004-06-08 14:34) [6]Преобразование типов данных ANSI в типы данных ORACLE:
INTEGER - NUMBER(38)
(с) Сервер ORACLE. Основные концепции.
← →
Вольный Стрелок © (2004-06-08 15:30) [7]в Оракле INTEGER, SMALLINT, FLOAT, DOUBLE PRECISION - это все подтипы NUMBER, и Дельфи их видит соответственно как BCD и FMTBCD в зависимости от точности.
а хотелось бы, чтобы видела как TIntegerField, TSmallintField, TFloatField соответственно.
кстати, при написании первого поста поставил галки "СУБД - IB6.5 и Оракл", а отобразило только ИБ :(
← →
Johnmen © (2004-06-08 18:50) [8]>DenK_vrtz © (08.06.04 14:34) [6]
>INTEGER - NUMBER(38)
Надеюсь, понятно, что 38 не означает 38 байт под хранение...
:)
← →
Petr V. Abramov © (2004-06-08 19:56) [9]Internal Numeric Format
Oracle stores numeric data in variable-length format. Each value is stored in
scientific notation, with 1 byte used to store the exponent and up to 20 bytes to store
the mantissa. The resulting value is limited to 38 digits of precision. Oracle does not
store leading and trailing zeros. For example, the number 412 is stored in a format
similar to 4.12 x 10 2 , with 1 byte used to store the exponent(2)and2 bytesusedto
store the three significant digits of the mantissa(4,1,2). Negative numbers include
the sign in their length.
Taking this into account, the column size in bytes for a particular numeric data
value NUMBER(p),wherep is the precision of a given value, can be calculated using
the following formula:
ROUND((length(p)+s)/2))+1
where s equals zero if the number is positive, and s equals 1 if the number is
negative.
Zero and positive and negative infinity (only generated on import from Version 5
Oracle databases) are stored using unique representations. Zero and negative
infinity each require 1 byte; positive infinity requires 2 bytes.
ВСЕМ ЧИТАТЬ Concepts!
Внимательно
← →
Reindeer Moss Eater © (2004-06-09 08:33) [10]а хотелось бы, чтобы видела как TIntegerField, ....
Для того, чтобы поле NUMBER(X,0) выглядело в Delphi как ftIntegerField требуется ENABLE INTEGERS=TRUE
← →
Desdechado © (2004-06-09 11:10) [11]2 Reindeer Moss Eater
это где такую настройку? у меня dbExpress
← →
AleXqwq © (2004-06-09 11:35) [12]ADOQuery.FieldByName("Col1").AsInteger;
ADOQuery.FieldByName("Col2").AsFloat; ...
← →
AleXqwq © (2004-06-09 11:41) [13]ADOQuery.FieldByName("Col1").AsInteger;
ADOQuery.FieldByName("Col2").AsFloat; ...
← →
Вольній Стрелок (2004-06-09 12:44) [14]2 AleXqwq
DBEXPRESS а не ADO
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.07.04;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.037 c