pl/sql developer将结果集输出到excel

每个月的月初要给公司市场体系部门出一些月度统计报表,虽然用asp.net 2.0做了一个前端工具,操作也尽可能的简化,在推广使用中遇到2个问题:
 1、业务部门主观上不太接收,以往都是用excel包装好发到他们油箱,现在要改为他们自己上网站上取,有个别同事不愿意。
 2、月度统计的数据量比较大,查询耗时过长(个别要5分钟或10分钟)。所以即使将这些查询功能放到asp.net的网站上,也是无法使用,半天出不了结果(业务人员抱怨不绝入耳)。
注:这些查询的输出行数在1万-2万行左右,在asp.net中使用了rdlc报表工具(自带分页、导出到excel/pdf文件)。

鉴于这两个问题无法在短期内解决,财务部门的月度统计报表仍旧由手工出。查询统计功能已经全部封装成存储过程的代码。在Oracle9i中,存储过程返回结果集没有在MSSQL那么方便(直接发出select语句),它需要定义Ref Cursor,最后通过open v_curorname for select ...来打开引用游标。

若是对普通select语句,在pl/sql developer中执行后,在结果集上右击后选中“Copy to excel...”菜单即可。而对于返回结果集的存储过程(非表函数Table Function),不能用普通select * from p_procname(...)调用来获取结果集,所以比较麻烦。

后来发现,可以通过新建Test文件(*.tst),在pl/sql developer中执行后,打开多个结果集,并分别将结果集导出到excel中。在F8执行完后,在输出参数的游标后面,点击标题为"..."的按钮,弹出新窗口即可取出结果集,再利用右击后执行“Copy to excel...”菜单即可依次将结果输出到excel文件中。

新建tst文件相对比较简单,可以在打开package的代码中,选中某个procedure或function,右击选择“test”菜单,即可生成一个模板,再稍作修改即可。增加若干个存储过程调用,以及对应的参数声明。这么做的好处时能够预定义输出顺序,对于有10来个worksheet的excel处理较好,预先定义好每个工作表的表头和内容格式,保存成一个模板,再拷贝数据结果集。

目前的状况下,这是能找到的最快的解决办法。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值