如何在insert sql语句中使用参数传递列名 e.g。
@name='name'
insert into employees (id,@name) values(1,'a')
这可能吗?
答案 0 :(得分:0)
不可能您需要在应用程序中或在SQL Server本身中使用动态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
然而,它有两个问题。第一个@name必须是SQL注入证明。出于同样的原因,您还需要为@Value使用参数。但是,必须事先指定其数据类型,这意味着它不适用于所有列。因此,在反思中,您最好在应用程序层中执行此操作。 (注意:关于SQL注入的相同注意事项仍然适用,您的应用程序代码需要为列添加正确类型的参数)