38
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[CAIレシピ] DASによるストアドプロシージャ実行とストアドファンクションの実行

38
Last updated at Posted at 2025-12-19

はじめに

この記事ではDAS接続によるストアドプロシージャ、ストアドファンクションの実行手順を確認します。

なお、この記事は次の記事の内容を理解していることを前提としています。

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接続を作成します。

  1. DASによるSQL実行で作成した recipe-svcconn-jdbc-DAS を開いてアクション Stored Procedure Sample を追加します。
    image.png

  2. 入力タブ を選択して 入力フィールド argタイプ=テキスト として定義します。
    image.png

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

  4. ストアドプロシージャのOUTタイプ引数を、アクション Stored Procedure Sample の出力フィールドとして扱うため、__出力タブ__を選択して次のように出力フィールドを定義します。
    image.png

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

  6. 以降の手順は 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接続を作成します。

  1. DASによるSQL実行で作成した recipe-svcconn-jdbc-DAS を開いてアクション Stored Function Sample を追加します。
    image.png

  2. SQLバインディングタブ を選択して次のように指定します。指定しているストアドプロシージャは select recipeStoredFunc from dual です。
    image.png
    DAS接続には直接ストアドファンクションを実行する機能が無いようです。そのため、DUAL表(Oracle DBの場合)などを利用して実行結果をSELECT SQLの実行結果として取得するように実装しています。

  3. テスト結果タブ を選択してテスト実行後、次のようにストアドファンクションが返す文字列 999 が表示されていることを確認します。
    image.png

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

参照

38
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
38
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?