【发布时间】:2014-01-30 00:48:49
【问题描述】:
我想以这种形式col1,col2,col3 获取变量中表的列
所以我使用了以下查询
SELECT @cols = COALESCE(@cols + ', ', '') + column_name FROM
INFORMATION_SCHEMA.COLUMNS where TABLE_CATALOG='mudb' and TABLE_NAME='mytbl'
我在上面取得了成功。但是当我想使用变量表名时。我有问题。我试过了
SELECT @cols = COALESCE(@cols + ', ', '') + column_name FROM
INFORMATION_SCHEMA.COLUMNS where TABLE_CATALOG='mudb' and TABLE_NAME=@tbl
但它给出了空结果。然后我决定使用EXECUTE sp_executesql
set @FullStatement='SELECT @cols = COALESCE(@cols + '', '', '''') +
column_name FROM INFORMATION_SCHEMA.COLUMNS where TABLE_CATALOG=''mudb''
and TABLE_NAME=@tbl'
PRINT @FullStatement
EXECUTE sp_executesql @FullStatement
然后它给了我错误Must declare the scalar variable "@cols" 但@cols 被声明
【问题讨论】:
标签: sql-server stored-procedures prepared-statement dynamic-sql