私は SQL Server 2008 R2 を使用しており、ストアド プロシージャの結果を、呼び出し元のストアド プロシージャで後でアクセスできる一時テーブルに取得しようとしています。私のTSQLは次のとおりです。
CREATE PROCEDURE sp_ToBeCalled AS
(
@SomeParam INT
)
BEGIN
SELECT * FROM tblSomeTable WHERE SomeField = @SomeParam
END
CREATE PROCEDURE sp_CallingProcedure AS
(
@SomeOtherParam INT
)
BEGIN
-- A
SELECT * INTO #MyTempTable FROM sp_ToBeCalled(@SomeOtherParam)
-- B
SELECT * FROM #MyTempTable FOR XML RAW
END
これはすべて正常にコンパイルされますが、sp_CallingProcedure ステートメントを呼び出すと、B は #MyTempTable というエラーを返します。
最初に #MyTempTable の構造を宣言しなくても、#MyTempTable テーブル内から結果にアクセスできるようにするには、「A」を実行するにはどうすればよいですか?
一般的に使用できるソリューションを探しています。クエリ可能な結果を取得する必要があるさまざまな呼び出し元から呼び出す必要がある既存のストアド プロシージャが多数あります。既存のストアド プロシージャを変更できません。
使いたくない
OPENQUOERY()
- カスタムのリンク サーバー定義が必要ですsp_ExecSql()
- SP コンパイル時間チェックを提供しない動的 SQL を構築する必要があることを意味します。