SQL Update столбцы, передающие в запрос имя и значение столбца - PullRequest
1 голос
/ 27 октября 2009

У меня есть следующий код:

UPDATE myTable
SET    Col1 = @Value

Однако у меня есть таблица, которая содержит более 100 столбцов, и я хочу иметь возможность указать имя столбца, передав его в запрос, подобный следующему:

UPDATE myTable
SET    @ColName = @Value

Когда я делаю это, я получаю ошибку. Есть ли хорошее решение для этого? Наверное, что-то простое!

Спасибо заранее.

Ответы [ 3 ]

6 голосов
/ 27 октября 2009

Вам нужно будет использовать динамический 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

Убедитесь, что вы изменили тип @pUpdateVal на подходящий для вашей среды, но это снизит риск инъекционных атак.

2 голосов
/ 27 октября 2009

Для этого вам придется вернуться к динамическому SQL.

1 голос
/ 27 октября 2009

Согласившись с остальными, для этого вам понадобится динамический SQL; Вы не можете определить имена объектов во время выполнения в собственном SQL. Для полного обсуждения динамического SQL см. http://www.sommarskog.se/dynamic_sql.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...