USE Database
GO
CREATE PROCEDURE FillTable
@Id nvarchar(50),
@ColumnNameArray nvarchar(4000),
@ColumnValueArray nvarchar(4000)
AS
INSERT INTO Table(@ColumnNameArray)
VALUES (@ColumnValueArray)
GO
这是我在存储过程中需要的功能。但我得到错误
Invalid column name '@zoneNameArray'.
那么工作到底是什么?
我该如何做到这一点?
编辑1: 如SO用户所说,我尝试使用它。
select @sql_Str='
INSERT INTO Table('+@ColumnNameArray+')
VALUES ('+@ColumnValueArray+')'
但我仍有错误。 ColumnNameArray
进展顺利。但是,它来ColumnValueArray
我仍然无法做到正确。
ColumnValueArray
由strings
和int
组成。
例如:ColumnValueArray = "12,'abc','dddd',45,'2333'"
这是我从前端(C#)传递给存储过程参数的内容。
答案 0 :(得分:3)
请试试这个
declare @sql_Str varchar(8000)
select @sql_Str='
INSERT INTO Table('+@ColumnNameArray+')
VALUES ('+@ColumnValueArray+')'
exec( @sql_Str);
假设@ColumnNameArray是以逗号分隔的列列表
答案 1 :(得分:1)
试
exec('INSERT INTO Table(' + @ColumnNameArray + ') VALUES (' + @ColumnValueArra + ')')
围绕它包装存储过程
CREATE PROCEDURE FillTable
@Id nvarchar(50),
@ColumnNameArray nvarchar(4000),
@ColumnValueArray nvarchar(4000)
AS
exec('INSERT INTO Table(' + @ColumnNameArray + ') VALUES (' + @ColumnValueArra + ')')
GO