我正在尝试在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
记得我检查了参数表,列和值参数不为空。
答案 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