據我所知,我想要做的是不可能在SQL中,但它值得問你們。執行存儲過程到動態臨時表
可以說我有一個存儲過程abc,它返回列Id和值。這個存儲過程主要由其他部門使用,出於功能方面的原因,我只會每隔一段時間使用它來進行數據檢查。
所以用它作爲我的存儲過程的一部分:
DECLARE @tABC TABLE
(
ID INT,
Value DECIMAL(12,2)
)
INSERT INTO @tABC
EXEC OtherDb.DataProd.abc
OKY所以這將很好地工作現在,但是如果他們改變自己的存儲過程的結構是什麼?
從他們的存儲過程添加或刪除一列會破壞我的代碼,所以有辦法讓我的代碼更加靈活。
我最後的孤注一擲去是這樣的:
WITH tempTable AS
(
EXEC OtherDb.DataProd.abc
)
SELECT ID, Value FROM tempTable
這顯然遭到慘敗。
這就是爲什麼你應該使用表值函數或表變量而不是存儲過程來返回表。無論如何,OPENROWSET可能是您的解決方案 – adrianm
@adrianm您對UDF的評論實際上解決了我的問題。我不相信我以前沒有看到過。 – JAT
[將存儲過程的結果插入臨時表中]的可能重複(http://stackoverflow.com/questions/653714/insert-results-of-a-stored-procedure-into-a-temporary-table) –