1
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我仍然无法做到这一点。 ColumnValueArraystrings和组成int。例如:ColumnValueArray = "12,'abc','dddd',45,'2333'"这是我从前端(C#)传递给存储过程参数的内容。

4

2 回答 2

3

请试试这个

   declare @sql_Str varchar(8000)
    select @sql_Str='
      INSERT INTO Table('+@ColumnNameArray+')
       VALUES ('+@ColumnValueArray+')'
    exec(  @sql_Str);  

假设 @ColumnNameArray 是一个逗号分隔的列列表

于 2012-07-11T09:23:55.190 回答
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
于 2012-07-11T09:22:10.330 回答