sql-server – 如何将表名作为存储过程的输入参数?

前端之家收集整理的这篇文章主要介绍了sql-server – 如何将表名作为存储过程的输入参数?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我下面有一个小的存储过程.

我将表名作为存储过程的输入参数,以便我计划将数据插入临时表并显示相同的内容.这只是我项目存储过程的一个很小的代码块.

当我编译下面的内容时,它会将select语句中的参数视为表变量并将错误抛出为:

Must declare the table variable “@TableName”.

sql

CREATE PROCEDURE xyz @TableName Varchar(50) 
AS 
BEGIN 
SELECT TOP 10 * INTO #Temp_Table_One 
FROM @TableName 

SELECT * FROM #Temp_Table_One 
END

解决方法

CREATE PROCEDURE xyz 
@TableName NVARCHAR(128) 
AS 
BEGIN 
  SET NOCOUNT ON;
  DECLARE @sql NVARCHAR(MAX);

SET @sql = N'SELECT TOP 10 * INTO #Temp_Table_One 
              FROM ' + QUOTENAME(@TableName)
          + N' SELECT * FROM #Temp_Table_One '

 EXECUTE sp_executesql @sql

END
原文链接:https://www.f2er.com/mssql/83301.html

猜你在找的MsSQL相关文章