SQL Server:使用动态表名插入存储过程

时间:2016-09-18 04:48:25

标签: c# sql-server stored-procedures

我正在尝试创建用于插入新数据的存储过程。基本上我收到一个关于'声明表变量@ tablename'的错误。

我试过了:

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

另一个问题是这个存储过程是安全的,因为我没有使用查询字符串,对吗?

1 个答案:

答案 0 :(得分:2)

准备动态插入语句,如下所示:

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 '+@table_name+' ([name], [description])
    Values (
       '''+@name+''',
        '''+@description+''')'
  EXEC(@Query);
  PRINT(@Query); 
end