我正在使用SQL Server 2008 R2,並試圖將存儲過程的結果導入臨時表中,以便稍後在調用存儲過程中訪問。我的TSQL如下:無法將存儲過程的結果導入#TempTable工作
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。
我該如何做「A」,以便我可以從#MyTempTable表中訪問其結果,而無需首先聲明#MyTempTable的結構?
我正在尋找可以一般使用的解決方案。我有一些現有的存儲過程,我需要從不同的調用者調用獲取結果可查詢的必要性。我無法更改現有的存儲過程。
我不想使用
OPENQUOERY()
- 需要自定義鏈接服務器定義sp_ExecSql()
- 意味着我必須建立動態SQL不給我SP編譯時檢查。
你可能要考慮表值函數以及 – Sparky 2013-04-29 22:29:16
你可以使用OPENROWSET來代替OPENQUERY以避免鏈接服務器定義。我試圖讓MS實現一個EXECUTE INTO,但他們關閉,因爲不會修復。 https://connect.microsoft.com/SQLServer/feedback/details/675710/execute-into-to-capture-execute-results-in-a-new-table – GilM 2013-04-29 22:37:46