Oracleでストアドプロシージャーから結果セットを取得する方法を教えてください

結果セットを返すストアドプロシージャーを実行する場合には、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
この記事は役に立ちましたか?
3人中0人がこの記事が役に立ったと言っています

他のキーワードで検索する