【发布时间】:2016-05-18 13:47:33
【问题描述】:
是否可以通过执行另一个变量来改变一个变量?
我现在的代码:
DECLARE
@CHOSENID VARCHAR(MAX),
@sql VARCHAR(MAX),
@COLUMNS VARCHAR(MAX)
SET @CHOSENID = '1032, 1132, 332, 1021'
SET @sql = ' select @COLUMNS = COALESCE(@COLUMNS + '' '', '''') + n.PRODUCT + '' BIGINT NOT NULL DEFAULT -1,''
from MYTABLE n where ID IN ('+@CHOSENID+') and TYPE=''X''
SET @COLUMNS = CONCAT(@COLUMNS, ''TIME DATETIME NOT NULL DEFAULT GETDATE() '')'
PRINT @sql
EXEC (@sql)
PRINT @COLUMNS
结果错误:
必须声明标量变量“@COLUMNS”。
当我尝试在@sql 中声明@COLUMNS 时,可以执行查询,但PRINT @COLUMNS 不返回任何内容。
MYTABLE 中的ID 是bigint 而@CHOSENID 是varchar,所以我不能简单地执行这个而不添加@sql
【问题讨论】: