DECLARE @sql NVARCHAR(max)
DECLARE @ParmDefinition NVARCHAR(500)
SET @sql = 'UPDATE [Table1] SET [Table1].[@columnName] = TEST';
SET @ParmDefinition = N'@columnName NVARCHAR(50)';
EXEC sp_executesql @sql, @ParmDefinition, @columnName = N'MyColumn';
当我运行上述查询时,我得到Invalid column name '@columnName'.
. 显然,运行查询时不会替换列名。
实际上,我的 @sql 变量要大得多,并且我有很多列要更新,因此我想避免SET SQL =
对列名的所有枚举进行操作。
我想声明一次 sql 字符串,并使用不同的值调用查询。例如:
EXEC sp_executesql @sql, @ParmDefinition, @columnName = N'MyColumn';
EXEC sp_executesql @sql, @ParmDefinition, @columnName = N'AnotherColumn';
EXEC sp_executesql @sql, @ParmDefinition, @columnName = N'YetAnotherColumn';
-- And so on
这样的事情可能吗?