CREATE OR REPLACE PROCEDURE test_xh(vi_date IN VARCHAR2,vi_rc IN NUMBER)
IS
v_date VARCHAR2(8);
e_date VARCHAR2(8);
b_date VARCHAR2(8);
BEGIN
v_date := vi_date;
b_date := substr(v_date,1,6)||'01';
e_date := '20130210';
--更新指定日期的日产量
UPDATE test_1 a SET a.rc = vi_rc WHERE a.reportdate = v_date;
COMMIT;
--循环开始,判断当前日期大于截止日期时跳出,小于时更新月累计
LOOP
IF v_date>e_date THEN
EXIT;
END IF;
UPDATE test_1 a SET a.ycl=(
SELECT SUM(b.rc) from test_1 b WHERE b.reportdate>=b_date AND b.reportdate<=v_date )
WHERE a.reportdate = v_date;
COMMIT;
v_date:=to_char(to_date(v_date,'YYYYMMDD')+1,'YYYYMMDD') ;
END LOOP;
END;