SQL プロシージャー型言語 (SQL PL)
SQL は、 SQL 関数、 SQL プロシージャー、 SQL トリガー、およびコンパウンド (動的) ステートメントのためのルーチン本体を作成するための構造化プログラミング言語として使用できます。 これは SQL プロシージャー型言語( SQL PLとも呼ばれます ) として知られています。
SQL プロシージャーおよび SQL 関数は、総称して SQL ルーチンと呼ばれます。 SQL プロシージャーは、CREATE PROCEDURE ステートメントに SQL ルーチン本体を 指定して作成します。 SQL 関数は、CREATE FUNCTION ステートメントに SQL ルーチン本体を指定して作成します。 SQL トリガーは、CREATE TRIGGER ステートメントに SQL ルーチン本体を 指定して作成します。 コンパウンド (動的) ステートメントは、コンパウンド (動的) ステートメントに SQL ルーチン本体を指定することによって定義されます。
SQL プロシージャーは変更も可能です。 CREATE PROCEDURE または CREATE FUNCTION ステートメントの OR REPLACE オプションを使用して、 SQL ルーチンを新規バージョンで置き換えることができます。 また、 ALTER PROCEDURE ステートメントまたは ALTER FUNCTION ステートメントに新しい SQL ルーチン本体を指定することもできます。
SQL ルーチン本体は、単一の SQL ステートメントでなけ ればならず、SQL 制御ステートメントであっても構いません。
SQL ルーチン本体は、プロシージャー、関数、またはトリガーの実行可能部分で、データベース・マネージャーによってプログラムまたはサービス・プログラムに変換されます。 SQL ルーチン、トリガーまたはグローバル変数が作成されるときに、SQL は、組み込み SQL ス テートメントを含む C ソース・コードが入った一時ソース・ファイル (QTEMP/QSQLSRC および QTEMP/QSQLT00000) を作成します。 SQL がこれらの一時ソース・ファイルを作成する場合、 レコード長 160 が使用され、ソース・ステートメントの CCSID 値が新規ファイルの CCSID 値として設定されます。 これらのソース・ファイルのいずれかがある場合、必要であればソースと同じ CCSID を持つように変更されます。 これらのソース・ファイルの レコード長は 160 にする必要があります。そうでないと、予期しない結果が発生する可能性があります。 ソース・ファイル・メンバーの名前は、ルーチン、トリガー、またはグローバル変数のシステム名と同じです。 DBGVIEW(*SOURCE) が指定されていた場合は、SQL はルーチンまたはトリガー用のルート・ソースを、プロシージャー、関数、またはトリガーと同じライブラリーにあるソース・ファイル QSQDSRC の中に作成します。
SQL プロシージャーは , CRTPGM または CRTSRVPGM コマンドを使用してプログラム (*PGM) またはサービス・プログラム (*SRVPGM) オブジェクトとして作成されます。 SQL 関数はサービス・プログラム・オブジェクトとして作成されます。 SQL トリガーがプログラム・オブジェクトとして作成されます。 このプログラムまたはサービス・プログラムは、プロシージャー名、関数 名、またはトリガー名の暗黙的または明示的な修飾子となるライブラリー内に作成 されます。
プログラムまたはサービス・プログラムが作成されると、ほとんどの制御ステートメントを含む SQL ステートメントが、プログラムまたはサービス・プログラム内の組み込み SQL ステートメントになります。 CALL、SIGNAL、RESIGNAL、および GET DIAGNOSTIC 制御ステートメントも、 そのプログラムまたはサービス・プログラム内の組み込み SQL ステートメントになります。
指定されたプロシージャーまたは関数は、SYSROUTINES および SYSPARMS カタログ表内で登録され、 プログラムに対する内部リンクが SYSROUTINES から作成されます。 プロシージャーが SQL CALL ステートメントを使用して呼び出されるとき、 あるいは関数が SQL ステートメント内で呼び出されるときに、そのルーチンに関連したプログラムが呼び出されます。 指定された SQL トリガーが SYSTRIGGERS カタログ表に登録されています。