TSQLで、カーソルを使わずにテーブル変数をループする方法はありますか?
例えば、次のような単純なテーブル変数があるとします。
declare @databases table
(
DatabaseID int,
Name varchar(15),
Server varchar(15)
)
-- insert a bunch rows into @databases
行を反復処理したい場合、カーソルを宣言して使用することが唯一の選択肢でしょうか?他に方法はありますか?
231
3
まず最初に、各行を反復処理する必要があるかどうか、絶対に確認する必要があります。
データによっては、以下のようにselect文だけでループ処理が可能な場合もあります。
また、一時テーブルを使用するという方法もあります。
どのオプションを選択するかは、データの構造や量によって異なります。
注意: SQL Serverを使用している場合は、以下を使用した方が良いでしょう。
COUNT
を使うと、テーブルのすべての行に触れる必要がありますが、
EXISTS`は最初の行に触れるだけで済みます(下記のJosef's answerを参照)。私ならこうします。
whileループを使うことができます。