+ -
当前位置:首页 → 问答吧 → 能否合并两个存储过程的结果集?

能否合并两个存储过程的结果集?

时间:2011-11-19

来源:互联网

我有两个存储过程,语句很复杂与庞大,现在有新地需求,想取两个存储过程的结果集,不知道如何处理?

1、A存储过程有:A列,B列,C列,D列,E列,F列,G列,H列,I列,J列
  B存储过程有:A列,B列,E列,F列,G列,H列,I列,J列,K列,L列

2、想通过SQL查询:A存储过程的(A列+B列+G列+H列)与B存储过程的(A列+B列+G列+H列)的所有数据,将其合成一个新的结果集.

不知道这个有没有办法处理?

作者: yanele   发布时间: 2011-11-19

用一个临时表,或表变量 获取存储过程 的结果集,再合并

作者: roy_88   发布时间: 2011-11-19

SQL code
给你举个例子

Create proc P1
as
select 'a' as ID,'b' as ID2
go
Create proc P2
as
select 'c' as ID,'d' as ID2
go

Create table #(ID nvarchar(2),ID2 nvarchar(2))
insert # exec P1
insert # exec P2
go
select * from #--这样获取后再处理
/*
ID    ID2
a    b
c    d
*/

作者: roy_88   发布时间: 2011-11-19

要是能满足自定义函数的要求,写成表函数也可以合并

作者: pengxuan   发布时间: 2011-11-19

引用 2 楼 roy_88 的回复:
SQL code

给你举个例子

Create proc P1
as
select 'a' as ID,'b' as ID2
go
Create proc P2
as
select 'c' as ID,'d' as ID2
go

Create table #(ID nvarchar(2),ID2 nvarchar(2))
insert # exec P1
inse……

mark

作者: smilysoft   发布时间: 2011-11-19

不可以指定存储过程的几列,存储过程所有列都需要接收,再临时表里过滤不需要的列

作者: roy_88   发布时间: 2011-11-19

实现你得知道两个存储过程获取的字段个数及字段数据类型。
创建两个表变量或临时表作为两个存储过程结果集的获取对象。

create table #t1(...)
create table #t2(...)

insert into #t1 exec proc1 ...
insert into #t2 exec proc2 ...

然后可以根据这两个对象来做你下一步的处理。

作者: AcHerat   发布时间: 2011-11-19

这样也行啊,学习啦.

作者: xiaolinyouni   发布时间: 2011-11-19

可以把存储过程改成函数,或者就用临时表

作者: koumingjie   发布时间: 2011-11-19

用临时表接受存储过程返回的表,再处理

作者: ssp2009   发布时间: 2011-11-19

SQL code
create table #t1(col1,col2,col3......)
create table #t2(col1,col2,col3......)
insert into #t1 exec proc1
insert into #t2 exec proc2
根据你的需求对两个临时表进行连接查询获取数据.

作者: qianjin036a   发布时间: 2011-11-19

引用 10 楼 qianjin036a 的回复:
SQL code
create table #t1(col1,col2,col3......)
create table #t2(col1,col2,col3......)
insert into #t1 exec proc1
insert into #t2 exec proc2
根据你的需求对两个临时表进行连接查询获取数据.

正解。。存储过程调用存储过程的方法之一。

作者: fredrickhu   发布时间: 2011-11-19

你也可以用OUTPUT参数。

作者: fredrickhu   发布时间: 2011-11-19

热门下载

更多