как передать имя столбца с параметром во вставке SQL - PullRequest
1 голос
/ 31 мая 2010

как передать имя столбца с параметром во вкладке sql statment например,

@name='name'
insert into employees (id,@name) values(1,'a')

это возможно?

1 Ответ

0 голосов
/ 06 июня 2010

Нет, не возможно, что вам нужно будет создать инструкцию SQL, включая столбец, в приложении или с помощью динамического SQL в самом SQL Server.

Редактировать: RE: "что такое динамический sql". Подход заключается в следующем.

DECLARE @Value nvarchar(100)
DECLARE @InsertString nvarchar(1000)
DECLARE @name sysname

SET @name ='name'
SET @Value = 'a'

SET @InsertString= 'INSERT INTO EMPLOYEES (id,' + @name + ') values(1, @Value)'


EXEC sp_executesql @InsertString, N'@Value nvarchar(100)', @Value 

Однако есть 2 проблемы с этим. Первое @name должно быть доказательством SQL-инъекции. По той же причине вы также хотели бы использовать параметр для @Value. Однако тип данных для этого должен быть указан заранее, что означает, что он не подходит для всех столбцов. Поэтому, подумав, вам лучше сделать это на уровне приложений. (Примечание: те же соображения, касающиеся внедрения SQL, по-прежнему применимы, и в коде вашего приложения потребуется добавить параметр правильного типа для столбца)

...