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

有个时间reportdate,有日产rc,月产量ycl,年产量ncl例如20130220的月产量就等于20130201--20130219的日产量的和+20120220当... 有个时间 reportdate ,有日产 rc ,月产量 ycl , 年产量 ncl
例如20130220 的月产量 就等于20130201--20130219的日产量的和+20120220当天的日产量
我要修改20130105的日产量,他就会影响到20130106--20130130的数据 月产量
怎么用oracle存储过程实现
展开
 我来答
百度网友3a8f439
推荐于2018-04-19 · TA获得超过300个赞
知道小有建树答主
回答量:224
采纳率:100%
帮助的人:158万
展开全部
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;
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式