oracle存储过程更新一段时间的数据,给定一个时间,更新这个时间之后的一段时间的表中一些字段的数据

2025-03-23 12:48:12
推荐回答(1个)
回答(1):

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;