プライマリ・コンテンツに移動
Oracle® Database Oracleプリコンパイラのためのプログラマーズ・ガイド
12c リリース1 (12.1)
B71398-03
目次へ移動
目次
索引へ移動
索引

前
次

フォームへの値のリターン

ユーザー・イグジットでは、SQL*Formsに制御が戻るとき、成功したか、失敗したかまたは致命的エラーが発生したかのいずれの状態かを示すコードも必ず戻します。このリターン・コーは、プリコンパイラによって生成される整数の定数です(この項の「例」を参照)。この3種類の結果はの意味は次のとおりです。

成功: ユーザー・イグジットでエラーが発生しませんでした。コール元の逆戻りリターン・コード・スイッチが設定されていなければ、SQL*Formsは成功ラベルまたは次のステップに進みます。

失敗: ユーザー・イグジットで、フィールド内の無効値などのエラーが検出されました。このイグジットによって渡されたオプションのメッセージが、SQL*Forms画面の下部のメッセージ行およびエラー表示画面に表示されます。SQL*Formsでは、行に影響を与えないSQL文に対する場合と同様に応答します。

致命的エラー: ユーザー・イグジットで、SQL文中の実行エラーなど、それ以上処理を続行できない状態が検出されました。イグジットによって渡されたオプションのエラー・メッセージが、SQL*Formsのエラー表示画面に表示されます。SQL*Formsでは、致命的なSQLエラーに対するときと同様に応答します。

ユーザー・イグジットでフィールドの値が変更された後で、失敗または致命的エラーのコードが戻された場合、SQL*Formsはこの変更を廃棄しません。また、逆戻りリターン・コード・スイッチが設定されていて、成功コードが戻されたときにも、SQL*Formsは変更を廃棄しません。

IAP定数

プリコンパイラでは、リターン・コードとして使用する3つの記号定数が生成されます。これらにはIAPの接頭辞が付きます。たとえば、3つの定数はIAPSUCC、IAPFAIL、IAPFTLのようになります。

SQLIEM関数の使用方法

関数SQLIEMをコールすると、トリガー手順が、失敗するか、表示画面で回復不能のエラーを引き起こした場合に、SQL*Formsがメッセージ行に表示するエラー・メッセージをユーザー・イグジットで指定できます。指定したメッセージは、その手順のために定義されたいかなるメッセージよりも優先されます。

SQLIEM関数コールの構文は次のとおりです。

SQLIEM (error_message, message_length);

ここで、error_messagemessage_lengthは、それぞれ文字変数と整数の変数です。Oracle Precompilersでは、適切な外部関数宣言が生成されます。どちらのパラメータも参照によって渡します。つまり、値でなくアドレスを渡します。SQLIEMはSQL*Forms関数です。他のOracleツールからはコールできません。

WHENEVERの使用方法

イグジット内でWHENEVER文を使用すると、無効なデータ型変換(SQLERROR)、フォーム・フィールドにPUTされた切捨て値(SQLWARNING)および行を戻さない問合せ(NOT FOUND)を検出できます。