由于总是忘记语法,所以,在这里记录一下,供以后查阅。
CREATE OR REPLACE PROCEDURE SP_UPDATE_GDTIME_WHENNULL AS BEGIN DECLARE CURSOR CUR IS SELECT SD,MAX(GD_CLDATE) AS TEMPGDTIME FROM TB_BB_WORKORDERDISPOSEORIGINAL WHERE TO_CHAR(GD_GDTIME,'yyyy-MM') ='0001-01' GROUP BY SD; V_SD TB_BB_WORKORDERDISPOSEORIGINAL.SD%TYPE; V_GDTIME TB_BB_WORKORDERDISPOSEORIGINAL.GD_GDTIME%TYPE; BEGIN OPEN CUR; FETCH CUR INTO V_SD,V_GDTIME; WHILE CUR%FOUND LOOP UPDATE TB_BB_WORKORDERDISPOSEORIGINAL SET GD_GDTIME=V_GDTIME WHERE SD=V_SD; COMMIT; FETCH CUR INTO V_SD,V_GDTIME; END LOOP; CLOSE CUR; END; END SP_UPDATE_GDTIME_WHENNULL;