2016-09-18 16 views
0

新しいデータを挿入するためのストアドプロシージャを作成しようとしています。基本的に私は 'テーブル変数@ tablenameを宣言する'というエラーが発生しています。SQL Server:動的テーブル名を使用してストアドプロシージャを挿入

は、私が試した:私は右、クエリ文字列を使用していないので、

create procedure [dbo].[spInsertProc](@table_name varchar(max)) 
as 
begin 
    declare @name nvarchar(128); 
    declare @description nchar(255); 
    declare @tablename varchar(max); 
    --declare @tablename as table; 

    set @tablename = @table_name; 

    Insert Into @tablename ([name], [description]) 
    Values (@name, @description) 
end 

もう一つの問題は、このストアドプロシージャ安全ですか?

+0

をあなたは、任意のSQL文でテーブル名の変数を使用することはできません。 – Gregg

答えて

1

は、以下のようにダイナミックinsert文を準備します

CREATE procedure [dbo].[spInsertProc](@table_name varchar(max)) 
as 
begin 
    declare @name varchar(50)='Sandip'; 
    declare @description varchar(50)='SE'; 

    Declare @Query VARCHAR(MAX) 
    SET @Query='Insert Into '[email protected]_name+' ([name], [description]) 
    Values (
     '''[email protected]+''', 
     '''[email protected]+''')' 
    EXEC(@Query); 
    PRINT(@Query); 
end 
関連する問題