Sql 如何在select查询中使用动态变量@counter作为最大值

Sql 如何在select查询中使用动态变量@counter作为最大值,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我需要SQL Server 2008中的循环,如下所示: while @counter < (Select Count(Id) from #Requests) begin exec ApplyData(Select TOP 1 Id from (select TOP @counter Id from #Requests) T order by Id Desc ) set @coun

我需要SQL Server 2008中的循环,如下所示:

while @counter < (Select Count(Id) from #Requests)
begin
  exec ApplyData(Select TOP 1 Id 
                 from (select TOP @counter Id from #Requests) T
                 order by Id Desc
                )
  set @counter = @counter + 1
end
它说在Select查询中使用@counter是错误的语法错误。正确的使用方法是什么?如何修复语法错误

谢谢

像这样使用

select TOP(@counter)

使用带有行号的CTE进行筛选或使其动态从选择TOP@counter….?中选择TOP 1,然后设置@counter=@counter+1?,这是什么意思?查找SPXExpUTESql,使其动态,从我所看到的,我会考虑更接近实际的过程,看看它是否可以修改,所以你不需要循环在所有。下降的选民关心,并没有投票否决,但这句语法不适用于SQL Server没有投票,但答案必须概括地回答整个问题。在这种情况下,即使op使用此选项,他/她的代码也会fail@Lamak同意你所说的,但我只是指出op哪里出了问题,这可能不需要解释all@JaydipJ但这并不是op出错的唯一部分。问题还有很多