DB2存储过程(纯SQL)实践

最近做一个报表程序,经常要在DB2中查询若干庞大的表的数据并执行一些计算,再返回给WEB端显示。之前的做法是,在java程序里根据条件拼接SQL语句,然后直接用拼接好的SQL语句查询数据库,一句SQL的长度甚至都到几K个字母的长度,加上大量的选择判断条件,可想而知,查询的过程非常缓慢,一般都在30s以上。

    据说调用存储过程会比SQL直接查询效率高,为了改善这样低下的查询效率,这几天强迫自己研究了一下DB2中的存储过程。因为之前从未了解过存储过程,所以几天时间下来,还是走了很多的弯路,不过总算有些收获。

    下面结合这几天实践的例子说明。

    NO.1、创建一个生成临时表的存储过程。

create procedure yourlib.java_bi_03(in yyyymm integer,in dwdm varchar(2)) 
--注释一行用2个减号表示,注释一段用/*...*/表示,yourlib是库名,java_bi_03是存储过程名,yyyymm是输入的整形参数,dwdm是输入的长度为2的字符型参数
 language sql 
p1:begin
 declare detail varchar(5000);                      --定义字符型变量,必须指定长度
 declare timevalue integer;                                 --定义整形变量
 set timevalue = yyyymm * 100 + 0;                    --对变量赋值均用set语句
 if dwdm <> '' then                                              --程序里可以直接使用传入的参数
  set detail = 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值