sha*_*oth 8 sql t-sql sql-server union stored-procedures
我有一个以下存储过程
CREATE PROCEDURE [dbo].[MyStored]
@state int
AS
SELECT blahblahblah WHERE StoredState=@state LotsOfJoinsFollow;
RETURN 0
Run Code Online (Sandbox Code Playgroud)
我想调用存储过程@state感0
和1
并请有两个通话联合返回的结果集UNION
的语义,使我有一个从第一呼叫和第二呼叫已排了新的结果集.
像(假想的SQL):
(EXEC MyStored 0) UNION (EXEC MyStored 1);
Run Code Online (Sandbox Code Playgroud)
我如何实现这一目标?
bri*_*ian 14
这可能过分简化了问题,但如果您可以控制sp,只需使用in而不是=:
CREATE PROCEDURE [dbo].[MyStored]
AS
SELECT blahblahblah WHERE StoredState IN (0,1) LotsOfJoinsFollow;
RETURN 0
Run Code Online (Sandbox Code Playgroud)
如果这不是一个选项,只需将两个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
Run Code Online (Sandbox Code Playgroud)
create table #table (
.....
)
insert into #table exec MyStored 0
insert into #table exec MyStored 1
select * from #table
drop table #table
Run Code Online (Sandbox Code Playgroud)