能不能你自己执行下不就知道了,退一万步讲,就算这样不行也可以传标记位置,然后通过字符串拼接成一句sql然后执行 SET @sql = 'SELECT * FROM '+ @TableName +'WHERE ......' EXEC(@sql);
DECLARE @Sql NVARCHAR(200); DECLARE @parm varchar(4); set @parm = 'abc'; SET @Sql = 'UPDATE tableA SET @parm=0 where biaozhi=111111'; exec sp_executesql @Sql, N'@parm varchar(4)',@parm这样写没出错,但是就是无法更新为0
DECLARE @Sql NVARCHAR(200); DECLARE @parm varchar(4); set @parm = 'abc'; SET @Sql = 'UPDATEtableA SET '+@parm+'=0 where biaozhi=111111'; EXEC(@sql);这样写竟然成功了!但是我想知道为什么用sp_executesql 的写法,到底是哪里格式不对!
SET @sql = 'SELECT * FROM '+ @TableName +'WHERE ......'
EXEC(@sql);
DECLARE @parm varchar(4);
set @parm = 'abc';
SET @Sql = 'UPDATE tableA SET @parm=0 where biaozhi=111111';
exec sp_executesql @Sql, N'@parm varchar(4)',@parm这样写没出错,但是就是无法更新为0
DECLARE @parm varchar(4);
set @parm = 'abc';
SET @Sql = 'UPDATEtableA SET '+@parm+'=0 where biaozhi=111111';
EXEC(@sql);这样写竟然成功了!但是我想知道为什么用sp_executesql 的写法,到底是哪里格式不对!