3
SQL Serverでカーソルを使用する代わりに、どのような方法がありますか。 私は既にRow_Number()関数を使って行を番号付けし、それを1つずつループするトリックを知っています。他のアイデア?SQLカーソルの代替手段
SQL Serverでカーソルを使用する代わりに、どのような方法がありますか。 私は既にRow_Number()関数を使って行を番号付けし、それを1つずつループするトリックを知っています。他のアイデア?SQLカーソルの代替手段
SQLカーソルを使用することを複雑にしたくないときは、一時テーブルやテーブル変数を設定することがよくありますが、whileループを実行します。例えば
:
declare @someresults table (
id int,
somevalue varchar(10)
)
insert into @someresults
select
id,
somevalue
from
whatevertable
declare @currentid int
declare @currentvalue varchar(10)
while exists(select 1 from @someresults)
begin
select top 1 @currentid = id, @currentvalue = somevalue from @someresults
--work with those values here
delete from @someresults where id = @currentid
end
いくつかのオプション:
多くの選択肢があります。現時点ではカーソルを含むいくつかのSQLコードを投稿すれば、それをセットベースのアプローチに変換することができます。 – NotMe
あなたはwikiスタイルを探していますか?「一般的にカーソルを避けた方法は何ですか?」あなたは実際のシナリオを持っていますか?ここに魔法の弾丸はありません。実際のソリューションは、お客様のシナリオによって異なります。 – tenfour
できればループとカーソルは避けてください。 SQLは、線形言語とは異なるセットベースの言語です。カーソルとループは、セットベースの言語に導入された線形ロジックです。ストーリーは短いので、ループやカーソルは避けてください...うまく設計されたスキーマでは、決して使用する必要はありません。 – Twelfth