最近遇到一个Birt报表项目比较复杂。领导的要求是希望得到算上双休日和假期的每天的平均余额。可是数据库中只有工作日的数据,假日是没有数据的。好在假日也没有资金变动,只要用前一天的数据补上假日的数据就好了。
之前我的做法都是把数据读取到Java端,再做处理。这次想要多研究一下sql的存储过程,决定利用存储过程直接把原表中假日的数据用前一天的数据补齐。期间遇到了不少问题,所以把经验记录下来。
存储过程的代码如下:
DROP SPECIFIC PROCEDURE "DB2ADMIN"."SQL150702173356000";
SET SCHEMA DB2ADMIN;
SET CURRENT PATH = "SYSIBM","SYSFUN","SYSPROC","SYSIBMADM","DB2ADMIN";
CREATE PROCEDURE "DB2ADMIN"."UPDATE_EVERYDAY_BAL" ( )
SPECIFIC "DB2ADMIN"."SQL150702173356000"
LANGUAGE SQL
NOT DETERMINISTIC
CALLED ON NULL INPUT
EXTERNAL ACTION
OLD SAVEPOINT LEVEL
MODIFIES SQL DATA
INHERIT SPECIAL REGISTERS
begin
DECLARE @rec_id varchar(42);
DECLARE @cmp_code varchar(9);
DECLARE @line_id varchar(9);
DECLARE @cur_code varchar(6);