行番号を挿入するためだけにrow_numberまたはrankを使用しようとしているので、カーソルを使用せずに一時テーブルを列挙できます。どちらの関数でも、「'rank'の近くの構文が正しくありません。'OVER'が必要です」というエラーが表示されます。OVERが提供するすべての機能とパフォーマンスへの影響は必要ありません-順序やランク付けなどについては少し気にしません。これは以前に行ったことがあると思いますが、数年前のことです。誰かが私を指摘できますか正しい機能に?
declare @SomeTempTable table (RowNum int NOT NULL, SomeField int NOT NULL);
insert into @SomeTempTable
select rank() as RowNum, SomeField
from SomeTable
declare @RowNum int = 1;
declare @NumRows int = (select max(RowNum) from @SomeTempTable);
while@RowNum <= @NumRows
begin
declare @SomeField int;
select @SomeField = SomeField
from @SomeTempTable
where RowNum = @RowNum;
--TODO: Do stuff
set @RowNum = @RowNum + 1;
END