SQL Server 2005でストアドプロシージャを作成していますが、別のストアドプロシージャを実行する必要があります。この呼び出しは動的である、と私はいつものようにsp_executesqlコマンドを使用しました:sp_executesqlとテーブル出力
DECLARE @DBName varchar(255)
DECLARE @q varchar(max)
DECLARE @tempTable table(myParam1 int, -- other params)
SET @DBName = 'my_db_name'
SET q = 'insert into @tempTable exec ['[email protected]+'].[dbo].[my_procedure]'
EXEC sp_executesql @q, '@tempTable table OUTPUT', @tempTable OUTPUT
SELECT * FROM @tempTable
しかし、私はこのエラーを取得する:
Must declare the scalar variable "@tempTable".
あなたは、変数が宣言されていることを見ることができるように。私はdocumentationを読んでおり、許可されるのはtext、ntext、imageだけです。私は何が必要なのですか? PS
:私は2008年のための多くのヒントを発見し、さらにバージョン、2005年
は、2005年からしばらくして、しかし@ TEMPTABLEのスコープが現在の手順、ないは、ExecuteSQL手順に限られている... – Sparky
それはsp_executesqlをとは何の関係もありません。それはテーブル変数のスコープと関係しています。次のことは、一時テーブルを使用することですが、sp_executesqlが別のスレッドで実行されるため、それも失敗することは間違いありません。 –