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

パラメータ テーブルを確認したことを思い出してください。列と値のパラメータは null ではありません。

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 に答える