SQL プロシージャーのパラメーター
いくつかの状況では SQL プロシージャーのパラメーターが有用となります。 例えば特定の入力または入力スカラー値のセットを条件とするロジックをインプリメントする場合や、1 つ以上の出力スカラー値を戻す必要があり、結果セットは戻さないようにする場合などです。
SQL プロシージャーは、プロシージャー内外への SQL 値の引き渡しのためのパラメーターをサポートしています。
SQL プロシージャーを設計または作成するときは、SQL プロシージャーのパラメーターのフィーチャーや制限について理解しておくことが得策です。
- Db2® では、SQL プロシージャーでの入力パラメーター、出力パラメーター、入出力パラメーターを任意指定で大量に使用することができます。 CREATE PROCEDURE ステートメントのルーチン・シグニチャーの部分の IN、OUT、INOUT という各キーワードは、パラメーターのモードまたは用途を示しています。 IN パラメーターと OUT パラメーターは値による受け渡し、 INOUT パラメーターは参照による受け渡しになります。
- プロシージャーで複数のパラメーターを指定するときは、それぞれが固有の名前にならなければなりません。
- プロシージャー内でパラメーターと同じ名前の変数を宣言する場合は、プロシージャー内でネストしたラベル付きのアトミック・ブロックの中に宣言する必要があります。 そうしない場合、Db2 は、あいまいな名前の参照を検出してしまいます。
- パラメーターのデータ・タイプに関係なく、SQL プロシージャーのパラメーターを SQLSTATE または SQLCODE という名前にすることはできません。
SQL プロシージャー内のパラメーターのリファレンスに関する詳細については、CREATE PROCEDURE (SQL) ステートメントを参照してください。
以下の SQL プロシージャー (myparams) は、
IN、INOUT、OUT の各パラメーター・モードの使用法を示した例です。 myfile.db2 という CLP ファイルに SQL プロシージャーを定義し、
コマンド行を使用することが前提になります。
CREATE PROCEDURE myparams (IN p1 INT, INOUT p2 INT, OUT p3 INT)
LANGUAGE SQL
BEGIN
SET p2 = p1 + 1;
SET p3 = 2 * p2;
END@