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

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

JAVA Developer 2003年9月号より転載

●文法の移行とTransact-SQL文の移行
 データ型、表定義、関数、演算子の移行が完了していれば、SQLの文法を確認し移行することで移行作業はほぼ完了します。

 SQLの基本的な文法の違いは、本誌の別の連載でも一部触れられていますし、各データベースのマニュアルを参照のうえ、違いを修正する必要があります。プログラムからよく発行されるSQL文であるSELECT、UPDATE、DELETE文に関しては複雑な構文でなければ似ているものです。

 SQL ServerにはTransact-SQLと呼ばれる独自のSQL拡張によるプロシージャを記述できます。これはOracle9iのPL/SQLに相当するものです。Transact-SQLとPL/SQLの構文は似ていますが、細かな違いはあります。変数の宣言方法、分岐方法、条件式、繰り返し文、例外処理、カーソルの取り扱いなど、機能とキーワードが同じであっても、順序や使い方が大きく異なるものがあります。Transact-SQLからPL/SQLへの移行は、こうした文法の違いを吸収することで可能です。

 しかし、Transact-SQLで比較的大きなプログラムブロックが記述されている場合は、もう一度PL/SQLで記述しなおすぐらいの覚悟が必要かもしれません。場合によっては、移行の機会にJavaプログラムに書き換えてしまうのも解決策かもしれません。

表12 TransactSQLとPL/SQLとの違い
SQL Server 2000 Oracle9i
変数宣言 DECLARE
ステートメントブロックの開始と終わり BEGIN...END BEGIN...END;
条件処理 IF…[BEGIN…END]
ELSE <条件>
[BEGIN…END]
ELSE IF <条件>
IF…THEN,
ELSIF…THEN,
ELSE
ENDIF;
無条件の終了 RETURN
無条件に終了,次のブロックへ移動 BREAK EXIT
繰り返し文 WHILE … BEGIN … END
LABEL;
LABEL…GOTO LABEL
WHILE LOOP…END LOOP;
LABEL…GOTO
FOR…END LOOP;
LOOP…END LOOP;
コメント文 /* …*/, --
プログラム実行 EXECUTE

●索引、ビュー、トリガーなどの移行
 SQL Serverの索引機能(Bツリーインデックスほか)は、すべてOracle9iでも利用できます。Oracle9iではさらに逆キーインデックスやビットマップインデックスを使用することができますので、インデックスの移行で大きな問題は生じないでしょう。ビューに関しては、SQL ServerとOracle9iともに索引をつけることができるビューを持っています。

 トリガー機能関連では、SQL Serverが持っている機能は基本的にOracle9iも持っており、さらに行レベルのトリガーやユーザーのログオン/ログオフするタイミングでもトリガーが使用できるよう拡張されています。トリガーの中身は、Transact-SQL文ですので、その部分の命令に関してはPL/SQLと対応させながら注意深く作業しなければなりません。

[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]