Ohataさん
こんにちは。
例えば、$listを使用して、10パラメータずつまとめてExecuteメソッドのパラメータに渡すというのはいかがでしょうか。プログラム例は以下のとおりです。(長くなりますので、途中「...」で省略しています)
set rs=##class(%ScrollableResultSet).%New()
// Prepare で 60個のパラメータから$listget関数を使って各カラムに分けたものをINSERTします。
set ret=rs.Prepare("INSERT coltest.test (P0000, ... ,P0599) "
_" SELECT $listget( P0,1), ... ,$listget( P0,10) "
_",$listget( P1,1), ... ,$listget( P1,10)"
:
_",$listget(P59,1), ... ,$listget(P59,10) "
_" FROM (SELECT ? as P0,? as P1,? as P2, ... ,? as P58,? as P59)")
quit:$$$ISERR(ret) ret
set ret=rs.Execute($lb("PPP0", ... ,"PPP9")
,$lb("PPP10", ... ,"PPP19"), ...
,$lb("PPP590",...,"PPP599"))
quit retPrepare()メソッドでは、60個のパラメータにP0~P59の名前を付けるサブクエリを作り、それをFROM句に指定して$listget関数で分解したデータをcoltest.testテーブルのP0001~P599のカラムにINSERTするSQL文を指定しています。
Execute()メソッドではデータ10個を$listbuild()関数で$list形式に変換し、パラメータとして指定しています。
- コメントを投稿するにはログインしてください
.png)
.png)
.png)
.png)
.png)
.png)