SQL Update列将查询列名称和值传递给查询

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)

当我这样做时,我得到一个错误.有一个很好的解决方案吗?它可能很简单!

先谢谢你.

Chr*_*s J 6

你将不得不使用动态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的类型更改为适合您环境的类型,但这样可以降低注入攻击的风险.