SQL Server:插入带有动态表名称的存储过程

问题描述:

我正在尝试创建一个用于插入新数据的存储过程。基本上,我得到了'声明表变量@ 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

准备如下动态插入语句

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