Oracleでは、
FOR employee_rec in (select id from mytbl)
LOOP
DBMS_OUTPUT.PUT_LINE(employee_rec.id);
END LOOP;
SQL Serverには、似たようなものがありますか?そうでない場合は、このループを実行する方法はありますか?
Oracleでは、
FOR employee_rec in (select id from mytbl)
LOOP
DBMS_OUTPUT.PUT_LINE(employee_rec.id);
END LOOP;
SQL Serverには、似たようなものがありますか?そうでない場合は、このループを実行する方法はありますか?
正しく実行したい場合は、SQLServerではもう少し冗長になります。
DECLARE @id INT;
DECLARE c CURSOR LOCAL STATIC READ_ONLY FORWARD_ONLY
FOR SELECT id FROM mytbl;
OPEN c;
FETCH NEXT FROM c INTO @id;
WHILE @@FETCH_STATUS = 0
BEGIN
PRINT @id;
FETCH NEXT FROM c INTO @id;
END
CLOSE c;
DEALLOCATE c;
ただし、リレーショナルデータベースはセットベースの操作に優れているため(ほとんどの場合)、通常はループやカーソルを避ける傾向があります。もちろん、他のルールと同様に例外もありますが、推測しなければならない場合は、実行しようとしていることを実行するためにループする必要はないと思います。あなたは本当に何をしようとしていますか?各行を個別に処理する必要があるのはなぜですか?