如何在插入 sql 语句中传递带有参数的列名,例如
@name='name'
insert into employees (id,@name) values(1,'a')
这可能吗?
如何在插入 sql 语句中传递带有参数的列名,例如
@name='name'
insert into employees (id,@name) values(1,'a')
这可能吗?
不,您不可能需要在应用程序中或通过在 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 注入的相同注意事项仍然适用,您的应用程序代码将需要为列添加正确类型的参数)