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
另外一个问题,因为我没有使用查询字符串,右边是这个存储过程的安全?
答
准备如下动态插入语句:
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
你不能在任何SQL语句中使用变量作为表名。 – Gregg