例: BTEQとCLIv2の入力/出力引数で定義したストアド プロシージャspSample2について考えてみましょう。引数は、以下のいずれかの書式で指定できます。
書式1:
パラメータの引数としてリテラルまたは定数式だけを指定する場合。
- ストアド プロシージャ:
CALL spSample2(1, 2, 3 + 4);
- 埋め込みSQLを使ったCプログラム:
EXEC SQL CALL spSample2(1, 2, 3 + 4);
書式2:
引数として渡す値がアプリケーション変数に入っている場合。
- ストアド プロシージャ:
SET AppVar1 = 10; SET AppVar2 = 30; SET AppVar3 = 40; CALL spSample2(:AppVar1, :AppVar1 + :AppVar2, CAST(:AppVar3 AS FORMAT 'Z,ZZ9'));
- 埋め込みSQLを使ったCプログラム:
AppVar1 = 10; AppVar2 = 30; AppVar3 = 40; EXEC SQL CALL spSample2(:AppVar1, :AppVar1 + :AppVar2, CAST(:AppVar3 AS FORMAT 'Z,ZZ9'));
書式3:
引数としてアプリケーション変数(AppVar1、AppVar2、およびAppVar3)の組み合わせと値/式を指定する場合。
- ストアド プロシージャ:
SET AppVar1 = 10; SET AppVar2 = 30; SET AppVar3 = 40; CALL spSample2(:AppVar1, 3 + :AppVar2, 3 + 4 + :AppVar3);
- 埋め込みSQLを使ったCプログラム:
AppVar1 = 10; AppVar2 = 30; AppVar3 = 40; EXEC SQL CALL spSample2(:AppVar1, 3 + :AppVar2, 3 + 4 + :AppVar3);
この形式のストアド プロシージャからは、出力パラメータが返されていないため、成功応答においてACTIVITY_COUNTの値は0で返されます。