- ベストアンサー
プロシージャーに動的にパラメータを与えたい
VB.netからプロシージャーを呼び出してます。 SQLで、inの中などで、動的にパラメータを与えたいです。 Select * from TableX where koumoku1 in (1,2,3,5,10) 例えば上の1,2,3,5,10 をパラメータとして外部から与えたいのですが、 プロシージャー側の実装としては、どのような方法があるのでしょうか? パラメータの与え方は、 x = "1,2,3,5,10" のように1つの文字列でも良いし x[0]=1,x[1]=2,x[2]=3,x[3]=5,x[4]=10 のように配列みたいな形でも良いです。 よろしくお願い致します。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
その他の回答 (2)
- yamada_g
- ベストアンサー率68% (258/374)
回答No.3
プロシージャの実装方法ですよね? こちらの例のように、配列で受け取って表関数を使用するようにしてはいかがでしょうか。 http://www.shift-the-oracle.com/plsql/table-function/collection-unnesting.html
質問者
お礼
ご回答、どうもありがとうございました。
- めとろいと(@naktak)
- ベストアンサー率36% (785/2139)
回答No.1
文字列で生成しているなら、SQL文をそのように出来上がるように加工すればいいのではないでしょうか。 プレースホルダ―を利用している方法では、SQL文を生成する際に、パラメータ数を考慮してSQL文を生成し、 その数分、Parameters.Add()すればいいと思います。
質問者
補足
SQLをvbで作る場合は、加工すればよいですが、 出来上がっているプロシージャーを呼ぶ形です。 引数に"1,2,3" と与えると、 「1,2,3」と言う1つの物に一致するかどうかで判断されています。 そのため、うまく行ってません。
お礼
返事が遅くなりました。 無事解決しました。 ありがとうございました。