动态更改别名

问题描述 投票:2回答:1

当我正在完成一项小任务时,我遇到了一个情况

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的值。

sql sql-server
1个回答
4
投票

您需要动态构建语句并使用EXECUTEsp_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世界时的推荐读物:qazxsw poi

改为使用sp_executesql:

The Curse and Blessings of Dynamic SQL
© www.soinside.com 2019 - 2024. All rights reserved.