SQL Server单个存储过程用于插入

时间:2012-10-20 22:10:23

标签: sql-server sql-server-2008

我正在尝试在SQL Server 2008中创建一个存储过程,它可以将数据插入任何表(不是特定于表)。我创建了一个如下所示,但在执行该过程期间抛出异常,即

  

无效的对象名称'dbo。@ table'。

存储过程代码:

CREATE PROCEDURE dbo.sp_InsertValues
   @table varchar(15)
   , @fields varchar(100)
   , @values varchar(100)   
AS
BEGIN
   INSERT INTO [dbo].[@table] (@fields) VALUES (@values)
END
GO

记得我检查了参数表,列和值参数不为空。

1 个答案:

答案 0 :(得分:2)

您需要使用动态SQL构建命令,然后执行它。试试这个:

CREATE PROCEDURE dbo.sp_InsertValues
   @table nvarchar(15)
   , @fields nvarchar(100)
   , @values nvarchar(100)   
AS
BEGIN
    DECLARE @SQL NVARCHAR(MAX)
    SET @SQL = 'INSERT INTO [dbo].' + QUOTENAME(@table) + '(' + @fields +') VALUES (' +  @values + ')'
    EXEC(@SQL)
END
GO