据我所知,我想要做的是不可能在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) –