0

我正在尝试在 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

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

4

1 回答 1

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
于 2012-10-21T10:05:52.330 回答