| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2334 人关注过本帖
标题:可以对存储过程的返回集再进行汇总查询吗?
取消只看楼主 加入收藏
小水滴
Rank: 1
等 级:新手上路
威 望:2
帖 子:227
专家分:0
注 册:2006-8-22
结帖率:100%
收藏
 问题点数:0 回复次数:7 
可以对存储过程的返回集再进行汇总查询吗?
我曾建立了一个存储过程Pa, 这个存储过程是对多表进行查询。例:
create prpcedure Pa
as
select a.aa,b.bb,c.cc
from a join b on a.ID=b.ID
join c on a.ID=c.ID

现在我想再建个存储过程Pb, 在这个存储过程中要调用存储过程Pa,对它的返回集再进行汇总查询:
create prpcedure Pb
as
exec Pa


接下来该如何编写?请教各位高手,先谢谢了!
搜索更多相关主题的帖子: 汇总 查询 
2006-08-22 15:42
小水滴
Rank: 1
等 级:新手上路
威 望:2
帖 子:227
专家分:0
注 册:2006-8-22
收藏
得分:0 
这个问题大概不常用吧, 没人知道吗?

版主快来给点提示啊!

[此贴子已经被作者于2006-8-29 14:07:14编辑过]


2006-08-27 12:09
小水滴
Rank: 1
等 级:新手上路
威 望:2
帖 子:227
专家分:0
注 册:2006-8-22
收藏
得分:0 

千呼万唤不出来!

[此贴子已经被作者于2006-9-3 8:48:03编辑过]


2006-09-02 22:01
小水滴
Rank: 1
等 级:新手上路
威 望:2
帖 子:227
专家分:0
注 册:2006-8-22
收藏
得分:0 
问题已初步解决. (使用临时表)

但仍有第二个问题: 如果我想再创建第三个存储过程 Pc ,再对 存储过程 Pb 进行汇总, 出来提示:不能嵌套.

谁有更好的方法, 请指点一下,谢谢!

2006-09-03 08:46
小水滴
Rank: 1
等 级:新手上路
威 望:2
帖 子:227
专家分:0
注 册:2006-8-22
收藏
得分:0 

由于前面的存储过程要多次应用在不同的场合,所以不能把后面的 proc 全放在第1個proc里面.

下面是代码(表和记录只是做测试用的):

--创建表
CREATE TABLE [bxhz]
([年月] varchar(10) ,
[科目] varchar (50) ,
[明细科目] varchar (50) ,
[支出] numeric (18, 2),
[报销人] varchar (20) )
GO

--添加记录
insert into bxhz
values('2006-01','经营费用','通讯费',100,'王丽')
insert into bxhz
values('2006-01','经营费用','差旅费',1500,'张华')
insert into bxhz
values('2006-01','经营费用','通讯费',550,'何军')
insert into bxhz
values('2006-01','经营费用','差旅费',2000,'刘伟')
insert into bxhz
values('2006-01','管理费用','工资',2000,'何军')
insert into bxhz
values('2006-01','管理费用','工资',3000,'张华')
insert into bxhz
values('2006-01','管理费用','其它',1000,'刘伟')
insert into bxhz
values('2006-01','管理费用','其它',400,'王丽')
insert into bxhz
values('2006-02','经营费用','通讯费',100,'王丽')
insert into bxhz
values('2006-02','经营费用','差旅费',1500,'张华')
insert into bxhz
values('2006-02','经营费用','通讯费',550,'何军')
insert into bxhz
values('2006-02','经营费用','差旅费',2000,'刘伟')
insert into bxhz
values('2006-02','管理费用','工资',2000,'何军')
insert into bxhz
values('2006-02','管理费用','工资',3000,'张华')
insert into bxhz
values('2006-02','管理费用','其它',1000,'刘伟')
insert into bxhz
values('2006-02','管理费用','其它',400,'王丽')

--创建第一个存储过程 Pa
create procedure Pa
as
begin
select 年月,科目,明细科目,sum(支出) as 支出 from bxhz group by 年月,科目,明细科目
end

--创建第二个存储过程 Pb
create procedure Pb
as
begin
create table #Pb2
([年月] varchar(10) ,
[科目] varchar (50) ,
[明细科目] varchar (50) ,
[支出] numeric (18, 2),
)
insert into #Pb2
exec Pa

select 年月,科目,sum(支出) as 支出 from #Pb2 group by 年月,科目
end

--创建第三个存储过程 Pc
create procedure Pc
as
begin
create table #Pc3
([年月] varchar(10) ,
[科目] varchar (50) ,
[支出] numeric (18, 2),
)
insert into #Pc3
exec Pb

select 年月, sum(支出) as 支出 from #Pc3 group by 年月
end

--调用:
exec pc

报错:insert exec 语句不能嵌套

是不是我什么地方用的不对,请楼上先生指点一下.


[此贴子已经被作者于2006-9-4 16:32:46编辑过]


2006-09-04 16:31
小水滴
Rank: 1
等 级:新手上路
威 望:2
帖 子:227
专家分:0
注 册:2006-8-22
收藏
得分:0 
楼上先生的意思是利用存储过程把汇总的结果存入一个真实的表里(Pa,Pb,Pc),然后从表中读取数据.

这又产生了一个多人同时调用存储过程的问题,假设用户A调用了存储过程Pa,产生了一个Pa表,那么用户B也调用存储过程Pa时,还能再产生一个同名的Pa表吗?

与楼上先生探讨.....

2006-09-05 11:34
小水滴
Rank: 1
等 级:新手上路
威 望:2
帖 子:227
专家分:0
注 册:2006-8-22
收藏
得分:0 
由于Pa,Pb需要多次应用在不同的场合,所以不能把存储过程缩减合并成一个存储过程。

 如果在存储过程调用中不用insert 语句,那么还有什么更好的办法可以达到最后的结果(主要是Pc出不来)

2006-09-08 11:43
小水滴
Rank: 1
等 级:新手上路
威 望:2
帖 子:227
专家分:0
注 册:2006-8-22
收藏
得分:0 
谁有更好的办法

2006-09-15 18:12
快速回复:可以对存储过程的返回集再进行汇总查询吗?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018605 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved