SQL Serverの整数はNUMBER(10)で最もよく表されることを私は知っています。
しかし、メンテナンススクリプトをOracleに移行することがあり、整数をNUMBER(10)に注意深くマップする必要があるのか、それともOracleでansi型整数を使用できるのか疑問に思います。
整数を使わない理由はありますか?
編集:
10gに対して検証しました。
create table BK_int_test(
i_col integer,
f_col float);
insert into BK_int_test values (1, 1);
insert into BK_int_test values (1.1, 1.1);
Select * from BK_int_test;
と
I_COL F_COL
---------- ----------
1 1
1 1,1
2 rows selected.
多くの作業を節約できるおかげで。
int
の短縮形integer
もサポートされています。
Oracleでinteger
を使用しない理由はわかりません。適切なOracleデータ型にマップされますが、DDLは少なくともある程度移植可能です。
また、とにかく同等であるため、VARCHAR2ではなくVARCHARを常に使用します。オラクルはこれを推奨していません。将来これが変更される可能性があるためですが、これはバージョン6以降も当てはまります。したがって、実際に変更されるとは思えません;)
integer
を使用しない理由として私が考えることができるのは、次の2つだけです。
これらの潜在的な問題はいずれも、 -9,999,999,999〜9,999,999,999 の範囲の整数を許可するnumber(10)
を使用しても解決されません。整数を同じ範囲に制限する必要がある場合は、check constraint
を使用することをお勧めします。例:
alter table my_table add check (val between -2147483648 and 2147483647);