1.6.3 SQLパラメタ,SQL変数
(1) 形式
-
SQLパラメタ
〔〔認可識別子.〕ルーチン識別子.〕SQLパラメタ名
-
SQL変数
〔文ラベル.〕SQL変数名
(2) 機能
(a) SQLパラメタ
SQLパラメタは,手続き定義時や関数定義時に宣言したルーチンのパラメタです。
SQLパラメタは,CALL文や関数呼出しでルーチンが呼び出されたときに,CALL文や関数呼出しを記述したUAP又はルーチンと,呼び出されるルーチンとの間で値の受け渡しをするための変数です。
ルーチン宣言時に指定するパラメタモードによって,SQLパラメタでは次のことができます。
-
パラメタモードがIN又はINOUTの場合
ルーチン中でSQLパラメタの値を参照できます。値を参照することで,ルーチンを呼び出したUAP又はルーチンから値を取得できます。
-
パラメタモードがOUT又はINOUTの場合
ルーチン中でSQLパラメタの値を設定できます。値を設定することで,ルーチンを呼び出したUAP又はルーチンに値を返せます。
SQLパラメタの指定方法は,SQLで記述したルーチンに指定するか,又はSQL以外で記述した外部ルーチンに指定するかで,次のように異なります。
-
SQLで記述したルーチン中に指定する場合
"〔〔認可識別子.〕ルーチン識別子.〕SQLパラメタ名"で指定します。
ただし,パブリック手続き定義時,又はパブリック関数定義時に認可識別子を指定するときは,PUBLICを指定してください。
-
SQL以外で記述した外部ルーチン中に指定する場合
SQLパラメタに対応する外部ルーチン本体のパラメタ名で指定します。この場合,外部ルーチンは,指定したパラメタをSQLパラメタとしてではなく,外部ルーチンの実装に用いた言語のパラメタとして参照,更新します。
なお,UAPとルーチンとの間で値の受け渡しをするとき,UAP側のCALL文中又は関数呼出し中には,埋込み変数,標識変数,又は?パラメタを指定します。
(b) SQL変数
SQL変数は,SQLルーチン中のSQL間の値の受け渡しや,表とSQLルーチンとの間の値の受け渡しに使用できます。SQL変数は,SQLルーチン中の複合文で宣言し,宣言した複合文中で参照できます。
SQLパラメタ,及びSQL変数は,埋込み変数と異なり,ナル値が格納できます。このため,標識変数を使用したり,変数名の前に「:」を付けたりする必要はありません。
(3) データ型
SQLパラメタ,及びSQL変数のデータ型は,SQLのデータ型を指定します。SQLのデータ型については,「データ型」を参照してください。