как передать имя столбца с параметром в insert sql statment например.как передать имя столбца с параметром в insert sql statment
@name='name'
insert into employees (id,@name) values(1,'a')
Возможно ли это?
как передать имя столбца с параметром в insert sql statment например.как передать имя столбца с параметром в insert sql statment
@name='name'
insert into employees (id,@name) values(1,'a')
Возможно ли это?
Нет, вам не нужно будет создавать SQL-заявление, включая столбец, либо в вашем приложении, либо с помощью динамического SQL в самом SQL-сервере.
Редактировать: 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 проблемы. Первое имя @ должно быть доказательством SQL Injection. По той же причине вы также хотели бы использовать параметр для @Value. Однако тип данных для этого должен быть указан заранее, что означает, что он не подходит для всех столбцов. Поэтому при отражении вам будет лучше делать это на вашем прикладном уровне. (NB: те же соображения, касающиеся SQL-инъекции, все еще применяются, и вашему прикладному коду нужно будет добавить параметр нужного типа для столбца)
Что такое динамический sql – shmandor
спасибо martin smith – shmandor