UNION多个存储过程的结果

web*_*orm 43 sql sql-server union stored-procedures

我有一个存储过程,我需要调用几次不同的时间,每次传递不同的参数.我想将结果收集为单个数据集.这样的事情可能......

exec MyStoredProcedure 1
UNION
exec MyStoredProcedure 2
UNION
exec MyStoredProcedure 3
Run Code Online (Sandbox Code Playgroud)

我尝试使用上面的语法,但得到错误...

Incorrect syntax near the keyword 'UNION'
Run Code Online (Sandbox Code Playgroud)

我正在处理的存储过程非常复杂,对我来说是一个"黑盒子",所以我无法进入存储过程的定义并改变任何东西.关于如何一起收集结果的任何建议?

我正在使用SQL Server 2008 R2.谢谢你的帮助.

gbn*_*gbn 71

你必须使用像这样的临时表.UNION用于SELECT,而不是存储过程

CREATE TABLE #foo (bar int ...)

INSERT #foo
exec MyStoredProcedure 1

INSERT #foo
exec MyStoredProcedure 2

INSERT #foo
exec MyStoredProcedure 3

...
Run Code Online (Sandbox Code Playgroud)

并希望存储过程没有INSERT..EXEC..已经不能嵌套的过程.或多个结果集.或者其他一些破坏构造

  • 当连接关闭或不再在范围内时(例如,上面的代码本身就是存储过程),它将被删除 (2认同)

Ben*_*Ben 11

你可以用INSERT EXEC它.

declare @myRetTab table (somcolumn ...)
insert @myRetTab
exec StoredProcName @param1
Run Code Online (Sandbox Code Playgroud)

然后在表变量或变量上使用union.