在动态SQL中递增INT类型的参数

在动态SQL中递增INT类型的参数,sql,sql-server,dynamic-sql,Sql,Sql Server,Dynamic Sql,我试图在我的脚本中,每循环一次,将一个参数集递增1 这是我在脚本中所做工作的一个示例: DECLARE @I AS INT; SET @I = 0; DECLARE @SQL NVARCHAR(MAX) SET @SQL = 'WHILE '+ Convert(Varchar, @I) +' < (SELECT statement here...) BEGIN SET '+ Convert(Varchar, @I) +' = '+ Convert(Varchar, (@I + 1)

我试图在我的脚本中,每循环一次,将一个参数集递增1

这是我在脚本中所做工作的一个示例:

DECLARE @I AS INT;
SET @I = 0;

DECLARE @SQL NVARCHAR(MAX)
SET @SQL =
'WHILE '+ Convert(Varchar, @I)  +' < (SELECT statement here...)
BEGIN
  SET '+ Convert(Varchar, @I) +' = '+ Convert(Varchar, (@I + 1))'
END'
 DECLARE @SQL NVARCHAR(MAX)
    SET @SQL = '
    DECLARE @I AS INT;
    SET @I = 0;    

    WHILE  @I  +' < (SELECT statement here...) +
    '
    BEGIN
      SET  @I = @I + 1
    END'
我需要它来改变下一个循环的实际变量值


这可能吗

您可以在查询中使用'@I'作为变量:

我试图在我的脚本中,每循环一次,将一个参数集递增1

这是我在脚本中所做工作的一个示例:

DECLARE @I AS INT;
SET @I = 0;

DECLARE @SQL NVARCHAR(MAX)
SET @SQL =
'WHILE '+ Convert(Varchar, @I)  +' < (SELECT statement here...)
BEGIN
  SET '+ Convert(Varchar, @I) +' = '+ Convert(Varchar, (@I + 1))'
END'
 DECLARE @SQL NVARCHAR(MAX)
    SET @SQL = '
    DECLARE @I AS INT;
    SET @I = 0;    

    WHILE  @I  +' < (SELECT statement here...) +
    '
    BEGIN
      SET  @I = @I + 1
    END'

你的心是不是在循环?试着解释一下最初的问题,也许会有更好的方法。我总是觉得在sql中出现循环时会有问题。另外,不要将整数转换为varchar,您将遇到troubles@Snowlockk我知道另一种方法,但是这个脚本只在任何干净的系统上运行一次。我想减少在此过程中命中服务器的次数,因此我将其设置为循环。@balaji感谢提醒:必须声明标量变量@I.feeling Oh wow。。。真的那么简单吗?非常感谢。当我解锁特权时,我将+1:3