エンタープライズ:特集 2003/07/25 18:19:00 更新

[Java Developer特別企画]2003年9月号
知っておきたいデータベース移行術「SQL Server→Oracle編」 (9/15)

JAVA Developer 2003年9月号より転載

●関数の移行
 SQL ServerとOracle9iで持っている数値関数に大きな差はありません。一般的なJ2EEアプリケーションで使用される範囲であれば、まったく問題なくOracle9iへ移行できます。その場合、一部の関数において名称が異なりますので、その名称変更が必要です。

・数値関数
 SQL Serverでは、ラジアン値を角度に変換するdegrees関数やpi関数など、固有の数値関数をサポートしています。

 これらの数値関数は演算によって求めることができる値が多く、Oracle9iへの移行の際は演算式に展開するとよいでしょう。円周率を表すpi関数は、SQL Serverでは固定値3.14159265358979を返すようになっています。これは絶対変化しない値ですから、そのままSQL文に定数として代入し(あるいはpiなどの変数を定義して代入し)、それを使うことで移行できます。

 数値関数の中で注意したいのは乱数の取り扱いです。SQL ServerでいうRAND関数に相当するものとして、Oracle9iではrandom関数を使用することができます。このrandom関数はOracle9iが準備している乱数ジェネレータrdbms_randomによって利用できる機能です。よって乱数の発生にはこの乱数ジェネレータrdbms_randomの初期化を行い、そのあとに、rdbms_random.random()と呼び出すことで、SQL ServerのRAND関数を移行できます。

表6 数値関数の移行
SQL Server 2000 Oracle9i
逆余弦 ACOS ←
逆正弦 ASIN ←
nの逆正接 ATAN ←
nとmの逆正接 ATN2 ATAN2
正接 TAN ←
正弦 SIN ←
余弦 COS ←
双曲線の余弦 COT COSH
ラジアン単位を角度に変換 DEGREES なし(計算式を適用)
円周率 PI 3.14159265358979
平方根 SQRT ←
指数値 EXP ←
絶対値 ABS ←
ある数値を下回らない最小の整数 CEILING CEIL
ある数値を超えない最大の整数 FLOOR ←
自然対数 LOG LN
10を底とする対数 LOG10 LOG(10)
余り %演算子 MOD
べき乗 POWER ←
乱数 RAND rdbms_random.random()
丸め ROUND ←
数の正負符号 SIGN ←
NULLの置換 ISNULL NVL
※Oracle9iのみがサポートする関数については掲載していません
※表中の「←」は、SQL Server 2000と同じことを意味します

[JAVA Developer特別企画]
知っておきたいデータベース移行術
「SQL Server→Oracle編」
(1)データベース移行に伴う影響範囲〜JDBCドライバ
(2)移行の実際〜認証/権限と命名規則
(3)データ型の移行〜数値型
(4)データ型の移行〜文字型
(5)データ型の移行〜日付データ型
(6)データ型の移行〜ラージデータ型/そのほかの特殊な型
(7)表定義に関する情報の移行
(8)関数の移行〜数値関数
(9)関数の移行〜文字関数
(10)関数の移行〜日付関数
(11)関数の移行〜そのほかの関数
(12)演算子の移行
(13)文法/Transact-SQL文/索引/ビュー/トリガーなどの移行
(14)メリットと注意事項〜移行ポイントを再確認

関連リンク
▼JAVA Developer
▼定期購読のご案内
▼バックナンバー販売協力店

JAVA Developer9月号表紙 Javaコレクションのマスターを目指せ!
JAVA Developer 9月号

大特集
病みつき! テストファースト

特集2 BEA WebLogic
[特別企画]
・コレクションフレームワークとデータ構造
・知っておきたいデータベース移行術
 「SQL Server→Oracle編」
・Webアプリケーションセキュリティ

前のページ | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | 次のページ

[西脇 資哲,JAVA Developer]