在动态SQL Select语句中创建别名列

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

我似乎无法添加@tblName变量作为别名列 - vanTbl,下面 - 在动态执行的SELECT语句中 - SQL不断抛出错误

列名无效

也许这是一些范围问题?任何建议非常感谢。如果已经在某处解决过,请提前道歉,过于含糊,等等。

DECLARE @tblName varchar(64)
DECLARE @sqlCommand nvarchar(1000)

DECLARE cursor1 CURSOR FOR
     (SELECT DISTINCT t1.TABLE_NAME 
      FROM 
          (SELECT * 
           FROM INFORMATION_SCHEMA.COLUMNS
           WHERE (COLUMN_NAME = 'x_SECTION'
                  OR COLUMN_NAME = 'x_TABLE')
          ) t1
      GROUP BY t1.TABLE_NAME)

OPEN cursor1 

FETCH NEXT FROM cursor1 INTO @tblName

SET @sqlCommand = 'SELECT DISTINCT ' +@tblName+ ' as vanTbl,
 SECTION,   SHAPE, TABLENAME, x_SECTION, x_TABLE FROM ' +@tblName + ' 
 WHERE x_SECTION <> '' '''

EXEC(@sqlCommand)

CLOSE cursor1
DEALLOCATE cursor1
sql sql-server
1个回答
0
投票

tblName应该被额外的引号括起来,因为它是一个字符串值:

 'SELECT DISTINCT ''' +@tblName+ ''' as vanTbl,

这将导致:

 'SELECT DISTINCT 'TBL_NAME' as vanTbl,

光标中没有循环似乎存在问题,但这可能是另一个问题。你应该看一些游标示例。

© www.soinside.com 2019 - 2024. All rights reserved.