ストアド プロシージャspSample2について考えてみましょう。引数は、以下のいずれかの書式で指定できます。
書式1:
- ストアド プロシージャ:
SET AppVar2 = 30 + AppVar3; SET AppVar3 = 40; CALL spSample1(:AppVar1, :AppVar2, :AppVar3);
- 埋め込みSQLを使ったCプログラム:
AppVar2 = 30 + AppVar3; AppVar3 = 40; EXEC SQL CALL spSample1(:AppVar1, :AppVar2, :AppVar3);
AppVar2とAppVar3に指定した値は、それぞれp2とp3の引数として渡されます。ストアド プロシージャの実行が終了すると、出力パラメータ値がAppVar1とAppVar2で返されます。ACTIVITY_COUNTは1に設定されます。
書式2:
- ストアド プロシージャ:
SET AppVar2 = 30 + AppVar3; SET AppVar3 = 40; CALL spSample1(:AppVar1, :AppVar2, :AppVar3 + 3);
- 埋め込みSQLを使ったCプログラム:
AppVar2 = 30 + AppVar3; AppVar3 = 40; EXEC SQL CALL spSample1(:AppVar1, :AppVar2, :AppVar3 + 3);
p2とp3の値は、それぞれAppVar2と(3 + AppVar3)です。ストアド プロシージャの実行が終了すると、出力パラメータ値がAppVar1とAppVar2で返されます。ACTIVITY_COUNTは1に設定されます。