How to take table name as an input parameter to th

2019-01-26 09:25发布

I have a small stored procedure below.

I am taking the table name as an input parameter to the stored procedure so that I'm planning to insert the data into the temp table and display the same. This is just a tiny code block of my project stored procedure.

When I am compiling the below, it is considering the parameter in the select statement as a table variable and throwing the error as:

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

2条回答
Luminary・发光体
2楼-- · 2019-01-26 09:59
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
查看更多
地球回转人心会变
3楼-- · 2019-01-26 09:59

use sql dynamic

try

CREATE PROCEDURE xyz @TableName Varchar(50) 
AS 
BEGIN 
 DECLARE @query
 set @query = 'SELECT TOP 10 * FROM '+ @TableName 
 EXEC @query
END

add schema name.

eg:

exec xyz @TableName = 'dbo.mytable'

exec xyz @TableName = 'myschema.mytable'

查看更多
登录 后发表回答