結果セットを返すストアドプロシージャーを実行する場合には、SQLCallコンポーネントを使用し、「実行する処理」プロパティで「ストアド実行(結果あり)」を指定します。
※SQLCallコンポーネントは、ASTERIA Warp Core/Core+/Core++エディションではお使いいただけません。
SQLCallコンポーネントの「SQL文」プロパティには次のようにストアドプロシージャーの呼出し方法を記述します。
{ ?RS? = call test(?P1?) }
{ call test2(?P1?, ?RS?) }※ストアドプロシージャーの実装によって呼出し方法は変わります。
上記のSQL文の中のRSは結果セットを受け取るためのSQLパラメータで、P1はストアドプロシージャーに値を渡すためのSQLパラメータです。SQLパラメータはSQLCallコンポーネントの「SQLパラメータ」タブで定義します。結果セットを受け取るためのSQLパラメータでは、データ型を「RESULTSET」にする必要があります。
最後に、取得した結果セットを使用するために出力ストリームのフィールド定義を行います。出力ストリームのフィールド名は、取得した結果セットのフィールド名と同じにする必要はありません。結果セットの最初のフィールドの値が出力ストリームの最初のフィールドに設定され、結果セットの2番目のフィールドの値が出力ストリームの2番目のフィールドに設定され、というようにフィールドの順番に従って出力ストリームに値が設定されていきます。
以下にコンポーネントプロパティ例として上記の1つ目の記法でSQL文を実行する場合の内容を示します。(P1パラメータは省略します)
「基本」タブ
| プロパティ名 | 値 |
|---|---|
| 実行する処理 | ストアド実行(結果あり) |
| SQL文 | ?RS? = call <プロシージャ名> |
「SQLパラメータ」タブ
| フィールド名 | 入力/選択値 |
|---|---|
| パラメータ名 | RS |
| 入出力 | 出力 |
| データ型 | RESULTSET |