はじめに
この記事ではDAS接続によるストアドプロシージャ、ストアドファンクションの実行手順を確認します。
なお、この記事は次の記事の内容を理解していることを前提としています。
- はじめてCAIを使う際に
- プロセスの作成と実行(匿名認証と基本認証)
- 割り当てステップと、各種変数フィールドの利用
- ディシジョンステップによるによる分岐処理
- ジャンプステップによる実行制御
- プロセスオブジェクトによるユーザー定義変数の利用
- DBを操作するためのアプリケーション接続設定
- DASによるSQL実行
DAS接続を利用してストアドプロシージャを実行する
動作確認をするために、次のSQLを実行してストアドプロシージャ recipeStoredProc を作成します。
このストアドプロシージャは引数 arg で指定された値をOUTタイプの引数 outval1 に設定し、さらにOUTタイプの引数 outval2 に文字列 999 を設定して終了します。
CREATE OR REPLACE PROCEDURE recipeStoredProc(
arg IN VARCHAR2,
outval1 OUT VARCHAR2,
outval2 OUT VARCHAR2
) IS
BEGIN
outval1 := arg;
outval2 := '999';
END recipeStoredProc;
/
ストアドプロシージャを実行するには次のようにDAS接続を作成します。
-
DASによるSQL実行で作成した recipe-svcconn-jdbc-DAS を開いてアクション Stored Procedure Sample を追加します。

-
SQLバインディングタブ を選択して次のように指定します。指定しているストアドプロシージャは
call recipeStoredProc( '{$arg}',?,?)です。

第1引数では入力フィールド arg を文字列として指定するために'{$arg}'として指定しています(文字列として指定するためにシングルクォートが必要)。
第2引数、第3引数には?を指定して、ストアドプロシージャのOUTタイプのフィールドを出力フィールド outval1, outval2 として受け取れるように定義しています。 -
ストアドプロシージャのOUTタイプ引数を、アクション Stored Procedure Sample の出力フィールドとして扱うため、__出力タブ__を選択して次のように出力フィールドを定義します。

-
テスト結果タブ を選択してテスト実行後、次のように出力フィールド outfield1, outfield1 にそれぞれ、入力フィールド arg で指定した値と 999 が表示されることを確認します。

-
以降の手順は DASによるSQL実行 に記載している手順と大きく変わりがないため割愛させてください。
なお、ストアドプロシージャには今回利用した IN および OUT のほかに IN OUT タイプがありますが、2025年12月時点で IN OUT タイプはサポートされていません。
ERROR: `ORA-06577: output parameter not a bind variable` when executing Stored Procedure through Service Connector in CAI
We have feature request ICAI-52217 created to support INOUT parameters in stored procedures called through DAS.
DAS接続を利用してストアドファンクションを実行する
動作確認をするために、次のSQLを実行してストアドファンクション recipeStoredFunc を作成します。このストアドファンクションでは 999 という文字列を返します。
CREATE OR REPLACE FUNCTION recipeStoredFunc
RETURN VARCHAR2 AS
BEGIN
return '999';
END recipeStoredFunc;
/
ストアドファンクションを実行するには次のようにDAS接続を作成します。
-
DASによるSQL実行で作成した recipe-svcconn-jdbc-DAS を開いてアクション Stored Function Sample を追加します。

-
SQLバインディングタブ を選択して次のように指定します。指定しているストアドプロシージャは
select recipeStoredFunc from dualです。

DAS接続には直接ストアドファンクションを実行する機能が無いようです。そのため、DUAL表(Oracle DBの場合)などを利用して実行結果をSELECT SQLの実行結果として取得するように実装しています。 -
テスト結果タブ を選択してテスト実行後、次のようにストアドファンクションが返す文字列 999 が表示されていることを確認します。

-
以降の手順は DASによるSQL実行 に記載している手順と大きく変わりがないため割愛させてください。
