我有两个程序 - 两个巨大的选择集,有几个子选择和联合。 我需要结合这些程序的结果,我仍然需要它们单独存在。
类似的东西:
if @Param = 1 Then
PROCEDURE1
if @Param = 2 THEN
PROCEDURE2
if @Param = 3 Then
PROCEDURE1 union PROCEDURE2
我读到在程序上建立联合是不可能的,我不能使用临时表。
有什么想法吗?
答案 0 :(得分:7)
您可以将程序转换为视图。
OR
您可以将过程执行到临时表中,然后将另一个执行到同一个临时表中:
create table #sometable (table definition here)
if @Param = 1 or @Param = 3 begin
insert #sometable exec PROCEDURE1
end
if @Param = 2 or @Param = 3 begin
insert #sometable exec PROCEDURE2
end
select * from #sometable
答案 1 :(得分:3)
你可以:
1)将数据插入临时表,然后从中进行SELECT:
--Define #t here, with correct schema to match results returned by each sproc
INSERT #t EXECUTE PROC1
INSERT #t EXECUTE PROC2
SELECT * FROM #t
2)只需从sproc返回2个结果集,让你的调用代码处理2个结果集
答案 2 :(得分:2)
有多种方法可以处理这种情况:
这个问题缺乏具体细节,所以很难推荐一个在另一个上面,更不用说提供量身定制的答案了。逻辑可以在单个查询中执行,这似乎是合理的。
答案 3 :(得分:1)
如果不使用临时表,我只能想到其他两种方式。
如果可能,将s'procs转换为视图。
将要调用proc的逻辑移动到您的应用程序(如果存在)。让它分别运行每个proc并结合结果。