我有一个以下存储过程
CREATE PROCEDURE [dbo].[MyStored] @state int AS SELECT blahblahblah WHERE StoredState=@state LotsOfJoinsFollow; RETURN 0
我想调用@state为0和1的存储过程,并将两个调用返回的结果集与UNION语义结合起来,这样我就有了一个新的结果集,它包含第一次调用和第二次调用的行.
像(假想的sql):
(EXEC MyStored 0) UNION (EXEC MyStored 1);
我如何实现这一目标?
解决方法
这可能会过度简化问题,但如果您可以控制sp,只需使用in而不是=:
CREATE PROCEDURE [dbo].[MyStored] AS SELECT blahblahblah WHERE StoredState IN (0,1) LotsOfJoinsFollow; RETURN 0
如果这不是一个选项,只需将两个sproc调用的结果推送到临时表:
/*Create a table with the same columns that the sproc returns*/ CREATE TABLE #tempblahblah(blahblahblah NVARCHAR(50)) INSERT #tempblahblah ( blahblahblah ) EXEC MyStored 0 INSERT #tempblahblah ( blahblahblah ) EXEC MyStored 1 SELECT * FROM #tempblahblah