Bel*_*iez 1 sql t-sql sql-server-2005
我有以下代码:
UPDATE myTable
SET Col1 = @Value
Run Code Online (Sandbox Code Playgroud)
但是,我有一个超过100列的表,并希望能够通过将名称传递给查询来指定列名,类似于:
UPDATE myTable
SET @ColName = @Value
Run Code Online (Sandbox Code Playgroud)
当我这样做时,我得到一个错误.有一个很好的解决方案吗?它可能很简单!
先谢谢你.
你将不得不使用动态SQL,并编写它以确保你不要让Little Bobby Tables进入.像这样:
DECLARE @sql NVARCHAR(500)
SET @sql = N'UPDATE myTable SET ' + QUOTENAME(@colName) + ' = @pUpdateVal'
EXEC sp_ExecuteSQL @sql, '@pUpdateVal NVARCHAR(20)', @value
Run Code Online (Sandbox Code Playgroud)
确保将@pUpdateVal的类型更改为适合您环境的类型,但这样可以降低注入攻击的风险.