1

如何在插入 sql 语句中传递带有参数的列名,例如

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

这可能吗?

4

1 回答 1

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 注入的相同注意事项仍然适用,您的应用程序代码将需要为列添加正确类型的参数)

于 2010-06-06T12:32:55.663 回答