【发布时间】:2016-08-08 05:39:18
【问题描述】:
--sp_executesql version
--SET @SQLQUERY = 'UPDATE @TableName SET Brief = @Brief,
-- [Full] = @Full,
-- CreatedBy = @CreatedBy,
-- Department = @Department,
-- Answer = @Answer WHERE Id=@Id';
--SET @ParamDefinition=N'@TableName nvarchar(50),@Brief nvarchar(50),@Full nvarchar(MAX),@CreatedBy varchar(256),@Department varchar(256),@Answer nvarchar(MAX),@Id int'
-- exec sp_executesql @SQLQUERY,@ParamDefinition,@TableName,@Brief,@Full,@CreatedBy,@Department,@Answer,@Id;
-- exec version
SET @SQLQUERY = 'UPDATE ' + @TableName + ' SET
Brief ='+ @Brief+',
[Full] ='+ @Full+',
CreatedBy ='+ @CreatedBy+',
Department ='+ @Department+',
Answer ='+@Answer+' WHERE Id='+CAST(@Id as nvarchar(10))
print @SQLQUERY;
EXEC (@SQLQUERY)
我同时使用了EXEC 和sp_executesql 程序来执行我的动态查询,但都失败了。
在EXEC 的情况下,动态查询未设置为@SQLQUERY 变量(在调试后看到),在sp_executesql 的情况下,虽然数据库已更新并且我已经将所有内容传递给它,但我得到标量变量错误.
【问题讨论】:
标签: sql sql-server tsql stored-procedures dynamic-sql