17,086
社区成员
发帖
与我相关
我的任务
分享
--未调试,自己动手调试一下
CREATE OR REPLACE PROCEDURE p_getdate(i_enddate DATE, i_layer VARCHAR2(20)) IS
v_begindate DATE;
v_enddate DATE;
v_layer VARCHAR2(20);
BEGIN
UPDATE b
SET b.开始时间 = i_enddate - 周期
WHERE 本层 = i_layer
RETURNING 开始时间 INTO v_begindate;
v_layer := i_layer;
LOOP
v_endate := v_begindate;
SELECT 本层 INTO v_layer FROM a WHERE 上层 = v_layer;
EXIT WHEN v_layer = '0_';
UPDATE b
SET b.开始时间 = v_enddate - b.周期, b.结束时间 = v_enddate
WHERE 本层 = v_layer
RETURNING 开始时间 INTO v_begindate;
END LOOP;
END;