2

テーブル変数を作成し、そのテーブル変数に対してを実行しようとするストアドプロシージャがありますselectが、出力で誤った構文エラーがスローされます。

以下にストアドプロシージャ(簡略化)があります:

CREATE PROCEDURE [dbo].[spGetLog] 
AS
  SET NOCOUNT ON;

  Declare @Table table (ID int identity(1,1), 
                        Node varchar(100)
                       )

  insert into @Table(Node) values ('employee')

  Declare @sqlquery AS NVARCHAR(1000)

  SET @sqlquery = 'select * from @Table;'
  EXEC (@sqlquery)

エラーが発生します-

'@Table'の近くの構文が正しくありません

実際には、@sqlquery私が持っている変数は複雑であり、変数を使用してクエリを実行する必要があります。

変数を使用してストアドプロシージャを実行できる方法はありますか?他の提案は大歓迎です。

4

1 に答える 1

0

David Wがコメントで述べたように、EXECスコープ内に表示されるものが必要な場合は、一時テーブル(テーブル変数ではない)を使用してください。

CREATE TABLE #Table (ID int identity(1,1), 
                    Node varchar(100)
                   )
insert into #Table(Node) values ('employee')

Declare @sqlquery AS NVARCHAR(1000)

SET @sqlquery = 'select * from #Table;'
EXEC (@sqlquery)

DROP TABLE #Table;
于 2012-10-24T16:37:53.387 に答える