この記事では、Oracle 用 SQL Server Migration Assistant (SSMA) が変換 EXCEPTION_INIT
できない理由について説明します。
背景
例外処理は、プログラム実行の通常のフローを変更する特別な条件である例外の発生を処理するように設計されたプログラミング言語コンストラクトまたはメカニズムです。 例外名を PRAGMA EXCEPTION_INIT
、予期できる他の Oracle エラー コードに関連付けるために使用できます。 エラー コードがわかったら、それを使用 PRAGMA EXCEPTION_INIT
して、そのエラー専用のハンドラーを記述できます。
パラメーター セクションでエラー番号を定義せずに例外を持つ PRAGMA EXCEPTION_INIT
PL/SQL コードを変換しようとすると、SSMA では数値リテラルが見つからないため、エラー メッセージが生成されます。 パラメーター セクションに負の数 (つまり、この例外をスローするエラー番号) を渡す必要があります。
例
次の例を確認してください。
DECLARE
MYEXCEPTION EXCEPTION;
PRAGMA EXCEPTION_INIT(MYEXCEPTION, '');
BEGIN
NULL;
END;
SSMA で前のコードを変換しようとすると、パラメーター セクションに数値リテラルが見つからないため、次の PRAGMA EXCEPTION_INIT
エラー メッセージが生成されます。
O2SS0055: PRAGMA パラメーター EXCEPTION_INIT正しくありません
考えられる対処方法
このエラーの解決策は、この例外をスローするエラー番号を定義することです。 コードを次のように更新します。
DECLARE
MYEXCEPTION EXCEPTION;
PRAGMA EXCEPTION_INIT(MYEXCEPTION, -10000);
BEGIN
NULL;
END;