web-dev-qa-db-ja.com

ストアドプロシージャへの入力パラメータとしてテーブル名を取得するにはどうすればよいですか?

以下に小さなストアドプロシージャがあります。

テーブル名をストアドプロシージャへの入力パラメーターとして使用しているため、データを一時テーブルに挿入して表示することを計画しています。これは、私のプロジェクトストアドプロシージャの小さなコードブロックです。

以下をコンパイルすると、selectステートメントのパラメーターがテーブル変数と見なされ、エラーがスローされます。

テーブル変数 "@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
12
chandra sekhar
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
20
M.Ali

sQL動的を使用する

試す

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

スキーマ名を追加します。

例えば:

exec xyz @TableName = 'dbo.mytable'

exec xyz @TableName = 'myschema.mytable'

0
LuisR9