DECLARE
/*
功能说明:入库顺序率判断;循环判断当前下线工单号是否是顺序最大工单号,如果是就更新IS_ORDER为1,如果不是就不更新。
创建人:*****
创建时间:*********
*/
A NUMBER ;--当日工单最大数
B NUMBER ;--顺序号
C NUMBER ;--最大数值
D NUMBER ;--循环递减顺序号
BEGIN
SELECT MAX(RN) INTO A FROM PRODU_F_GDJHRK WHERE TO_CHAR(SCHEDULED_DATE,'YYYYMMDD')='20210617';
--判断当前日期最大序号,并赋值给A,用作最外层循环数量
B:=1;--顺序号初始化为1;
FOR I IN 1..A LOOP
--最外层循环
SELECT GDXH INTO C FROM PRODU_F_GDJHRK WHERE RN=B;
--将当前顺序号的工单号赋值给C
D:=B;--循环递减顺序号初始化为当前顺序号
FOR I IN 1..B LOOP
--第二层循环
SELECT (CASE WHEN MAX(GDXH)>C THEN MAX(GDXH) ELSE C END) INTO C
--将当前顺序号数值和前一顺序号数值进行比对,将比对后的最大工单号赋值给C
FROM (
SELECT GDXH FROM PRODU_F_GDJHRK WHERE RN=D
--当前顺序号
UNION ALL
SELECT GDXH FROM PRODU_F_GDJHRK WHERE RN=D-1
--前一顺序号
);
D:=D-1;--循环递减顺序号递减
END LOOP;--结束第二层循环
UPDATE PRODU_F_GDJHRK SET IS_ORDER=1 WHERE RN=B AND GDXH=C;--将当前工单号为最大工单号的顺序率更新为1,
B:=B+1;--顺序号递加
END LOOP;--结束最外层循环
END ;
ORACLE循环(FOR)判断当前数字是否为最大数字
最新推荐文章于 2022-03-29 18:02:25 发布