当我在做一个小任务时,我遇到了一个情况
DECLARE @i INT ,
@l INT ,
@desc CHAR(50)
SET @l = 1
SET @i = 20
WHILE ( @l <= @i )
BEGIN
SELECT 'Test' AS 'Test'+@l
SET @l = @l + 1
END
在这段代码中,我希望当一个循环运行时,所有时间列名都随着@l 的值而改变。
当我在做一个小任务时,我遇到了一个情况
DECLARE @i INT ,
@l INT ,
@desc CHAR(50)
SET @l = 1
SET @i = 20
WHILE ( @l <= @i )
BEGIN
SELECT 'Test' AS 'Test'+@l
SET @l = @l + 1
END
在这段代码中,我希望当一个循环运行时,所有时间列名都随着@l 的值而改变。
您需要动态构建语句并使用EXECUTE或sp_executesql来执行该语句。
DECLARE @i INT ,
@l INT ,
@desc CHAR(50)
SET @l = 1
SET @i = 20
WHILE ( @l <= @i )
BEGIN
EXEC ('SELECT ''Test'' AS Test'+@l)
SET @l = @l + 1
END
走进动态SQL的世界推荐阅读:动态SQL的祸与福
改用 sp_executesql:
DECLARE @i INT ,
@l INT ,
@desc CHAR(50),
@SQL NVARCHAR(100)
SET @l = 1
SET @i = 20
WHILE ( @l <= @i )
BEGIN
SET @SQL = N'SELECT ''Test'' AS Test'+CAST(@l AS NVARCHAR(10))
EXEC sp_executesql @SQL
SET @l = @l + 1
END