我正在尝试使用 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