我有两个程序 - 两个巨大的选择集,带有几个子选择和联合。我需要合并这些程序的结果,我仍然需要它们单独存在。
像这样的东西:
if @Param = 1 Then
PROCEDURE1
if @Param = 2 THEN
PROCEDURE2
if @Param = 3 Then
PROCEDURE1 union PROCEDURE2
我读到不可能对过程进行联合,而且我不能使用临时表。
任何想法?
我有两个程序 - 两个巨大的选择集,带有几个子选择和联合。我需要合并这些程序的结果,我仍然需要它们单独存在。
像这样的东西:
if @Param = 1 Then
PROCEDURE1
if @Param = 2 THEN
PROCEDURE2
if @Param = 3 Then
PROCEDURE1 union PROCEDURE2
我读到不可能对过程进行联合,而且我不能使用临时表。
任何想法?
您可以将过程转换为视图。
或者
您可以将这些过程执行到一个临时表中,然后将另一个过程执行到同一个临时表中:
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)将数据插入临时表,然后从中选择:
--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 个结果集
如果不使用临时表,我只能想到另外两种方法。
如果可能,将 s'procs 转换为视图。
将要调用哪个 proc 的逻辑移至您的应用程序(如果存在)。让它分别运行每个过程并组合结果。