こんにちわ。T-SQL初心者です。
T-SQLで配列を使う方法を模索しております。
現状は、下記のようにカーソル文を用いて
データの数分だけFETCH NEXT~
をしているのですが、データの数が膨大になったとき、
手打ちでは追い付かないと考えました。
そこで、これらを配列で持たせる方法があれば
一々手打ちしなくてもよいと考えます。
しかし、それを実現する方法がわからず、
途方に暮れてしまいました。
皆様の力をお貸しください。
SQLSERVERは2014年です。
追記:C#ですと
C#
//初期宣言 var list = new list<string>() for(i = 0 i <= 9; i++){ list.add(i.ToString()); }
イメージ的にはこんな感じかなと。
このようなことをT-SQLでできないかな・・。
T
--カーソルの値を取得する変数宣言 DECLARE @W_COL1 varchar(50) DECLARE @W_COL2 decimal(18,0) --カーソル定義 DECLARE CUR_AAA CURSOR FOR SELECT COL1 ,COL2 FROM TAB_A WHERE TAB_A.COL1 = <条件値> --カーソルオープン OPEN CUR_AAA; --最初の1行目を取得して変数へ値をセット FETCH NEXT FROM CUR_AAA INTO @W_COL1,@W_COL2; --データの行数分ループ処理を実行する WHILE @@FETCH_STATUS = 0 BEGIN -- ========= ループ内の実際の処理 ここから=== 1.ここにSELECT結果を配列としてSET -- ========= ループ内の実際の処理 ここまで=== --次の行のデータを取得して変数へ値をセット FETCH NEXT FROM CUR_AAA INTO @W_COL1,@W_COL2; END 2.配列結果のうち、@W_COL1を IF文の条件として使用する。 3.IF分の中でさらにSELECT文を発行し、 WHERE句として使用する --カーソルを閉じる CLOSE CUR_AAA; DEALLOCATE CUR_AAA;
まだ回答がついていません
会員登録して回答してみよう