アプリケーション・プログラムへのステートメントの組み込み

SQL ステートメントは、プリコンパイラーにサブミットされるソース・プログラムに組み込むことができます。 このようなステートメントは、プログラムに組み込まれている と言います。

組み込みステートメントは、 ホスト言語のステートメントが可能な位置であればそのプログラム内のどこにでも組み込むことができます。 各組み込みステートメントの前には、キーワード EXEC SQL を付ける必要があります。

アプリケーション・プログラムに組み込まれた実行可能ステートメントは、 ホスト言語ステートメントが実行されるたびに、そこに実行可能ステートメントが指定されていると同じ時点で実行されます。 したがって、ループ内のステートメントは、ループが行われるたびに実行され、 条件構文内のステートメントは、その条件が満たされた場合にのみ実行されます。

組み込みステートメントには、ホスト変数への参照を含むことができます。 参照されるホスト変数は、以下のような 2 つの方法で使用することができます。
  • 入力として使用する (ホスト変数の現行値がそのステートメントの実行に使用されます)。
  • 出力として使用する (ホスト変数には、 そのステートメントの実行結果として新しい値が割り当てられます)。

特に、式および述部の中のホスト変数に対する参照はすべて、 変数の現行値により置き換えられます。つまり、変数は入力として使用されます。

すべての実行可能ステートメントの後で、必ず SQL 戻りコードのテストを行う必要があります。 別の方法として、WHENEVER ステートメント (それ自体は実行不能) を使用して、 組み込みステートメントの実行直後の制御の流れを変更することもできます。

データ操作言語 (DML) ステートメントで参照されるオブジェクトはすべて、 ステートメントがデータベースにバインドされる時点で存在している必要があります。

組み込まれた実行不能ステートメントは、プリコンパイラーによってのみ処理されます。 プリコンパイラーはステートメントにエラーを検出すると、それを報告します。 このようなステートメントは、プログラムの実行時に処理されることはありません。 したがって、このようなステートメントの後で SQL 戻りコードのテストを行ってはなりません。

CREATE PROCEDURE ステートメントの SQL プロシージャー本体にステートメントを組み込むことができます。 このようなステートメントは、 SQL プロシージャーに組み込まれているといいます。 SQL ステートメントの説明でホスト変数 が参照されるときはいつでも、 ステートメントが SQL プロシージャーに組み込まれていれば SQL 変数 を使用できます。