• oracle_存储过程_没有参数_更新过期申请单以及写日志事务回滚


    CREATE OR REPLACE PROCEDURE A_MEAS_MIINSP_PLAN_UPDATE
    AS
    vs_msg VARCHAR2(4000);
    log_body VARCHAR2(400);
    log_body2 VARCHAR2(400);
    updatecount number;
    plancodes varchar2(1000);
    codeday VARCHAR2(40); --前几天
    cur_1 SYS_REFCURSOR; --声明游标变量
    v_plan_code VARCHAR2(400); --当前plancode
    v_plan_name VARCHAR2(400); --当前planname
    BEGIN
    insert into a_meas_miinsp_log(CREATE_DATE,BODY,EXECUTE,LOGTYPE) values(sysdate,'开始执行A_MEAS_MIINSP_PLAN_UPDATE存储过程','execute','A_MEAS_MIINSP_PLAN_UPDATE');

    select A_DICS.Code into codeday
    from A_DICS
    inner join a_Diccategory on A_DICS.Categoryid = a_Diccategory.Keyid
    where A_DICS.Status = 1 and a_Diccategory.Code = 'MEAS_RecycleDay' and A_DICS.title ='检定';

    if(codeday is null)
    then
    begin
    insert into a_meas_miinsp_log(CREATE_DATE,BODY,EXECUTE,LOGTYPE) values(sysdate,'数据字典中不存在配置单据回收天数','execute','A_MEAS_MIINSP_PLAN_UPDATE');
    insert into a_meas_miinsp_log(CREATE_DATE,BODY,EXECUTE,LOGTYPE) values(sysdate,'结束执行A_MEAS_MIINSP_PLAN_UPDATE存储过程','execute','A_MEAS_MIINSP_PLAN_UPDATE');
    commit;
    return;
    end;
    end if;

    --定义游标(简单的说就是一个可以遍历的结果集)

    open cur_1 for
    --CURSOR cur_1 IS
    select plan_code,plan_name from a_meas_miinsp_plan
    where
    --create_date < to_date(to_char(sysdate - interval codeday day,'yyyy-mm-dd'),'yyyy-mm-dd')
    to_date(to_char(create_date,'yyyy-mm-dd'),'yyyy-mm-dd') <= to_date(to_char(sysdate -codeday,'yyyy-mm-dd'),'yyyy-mm-dd')
    and report_state in (1,2);


    loop
    FETCH cur_1 into v_plan_code,v_plan_name;
    EXIT WHEN cur_1%NOTFOUND;

    update a_meas_instru_ccount a set
    a.mi_status=(
    select b.old_mi_status from a_meas_miinsp_detail b where
    b.plan_code=v_plan_code and
    b.mi_id=a.mi_id )
    ,operatedate=sysdate,operateuser='sysadmin'
    where exists (
    select b.old_mi_status from a_meas_miinsp_detail b where
    b.plan_code=v_plan_code and
    b.mi_id=a.mi_id);
    log_body :='修改'||v_plan_name||'检定计划下器具状态为原来状态.';
    plancodes:=plancodes||v_plan_code||',';
    insert into a_meas_miinsp_log(CREATE_DATE,BODY,EXECUTE,LOGTYPE) values(sysdate,log_body,'update','A_MEAS_MIINSP_PLAN_UPDATE+A_MEAS_INSTRU_CCOUNT');
    END LOOP;

    select count(*) into updatecount from a_meas_miinsp_plan
    where
    --create_date < to_date(to_char(sysdate - interval codeday day,'yyyy-mm-dd'),'yyyy-mm-dd')
    to_date(to_char(create_date,'yyyy-mm-dd'),'yyyy-mm-dd') <= to_date(to_char(sysdate -codeday,'yyyy-mm-dd'),'yyyy-mm-dd')
    and report_state in (1,2) ;
    if(updatecount>0)
    then
    --更新检定计划表中的三天前的编制状态记录为 已回收 状态
    --update a_meas_miinsp_plan set report_state=7 where create_date < to_date(to_char(sysdate - interval codeday day,'yyyy-mm-dd'),'yyyy-mm-dd');
    update a_meas_miinsp_plan set report_state=7,change_time=sysdate,change_userid='sysadmin' where to_date(to_char(create_date,'yyyy-mm-dd'),'yyyy-mm-dd') <= to_date(to_char(sysdate -codeday,'yyyy-mm-dd'),'yyyy-mm-dd')
    and report_state in (1,2) ;
    --添加日志
    log_body2 :='修改'||updatecount||'条编制状态的检定计划:'||plancodes;
    insert into a_meas_miinsp_log(CREATE_DATE,BODY,EXECUTE,LOGTYPE) values(sysdate,log_body2,'update','A_MEAS_MIINSP_PLAN_UPDATE+A_MEAS_MIINSP_PLAN');
    end if;
    insert into a_meas_miinsp_log(CREATE_DATE,BODY,EXECUTE,LOGTYPE) values(sysdate,'结束执行A_MEAS_MIINSP_PLAN_UPDATE存储过程','execute','A_MEAS_MIINSP_PLAN_UPDATE');
    COMMIT;
    EXCEPTION
    WHEN OTHERS THEN
    vs_msg := 'ERROR IN A_MEAS_MIINSP_PLAN_UPDATE '||SUBSTR(SQLERRM,1,500);
    ROLLBACK;
    --添加日志
    insert into a_meas_miinsp_log(CREATE_DATE,BODY,EXECUTE,LOGTYPE) values(sysdate,vs_msg,'update','A_MEAS_MIINSP_PLAN_UPDATE');
    COMMIT;
    RETURN;
    End;

  • 相关阅读:
    POJ 2739 Sum of Consecutive Prime Numbers( *【素数存表】+暴力枚举 )
    Hihocoder #1098 : 最小生成树二·Kruskal算法 ( *【模板】 )
    POJ 1861 Network (Kruskal算法+输出的最小生成树里最长的边==最后加入生成树的边权 *【模板】)
    java
    游戏源码--Unity开源Moba游戏-服务器-客户端完整V1.0
    c# 跨平台ide JetBrains Rider
    lua-遍历集合-ipairs和pairs的区别
    Mixamo Fuse10分钟创建角色
    现学现卖】IntelliJ+EmmyLua 开发调试Unity中Xlua
    params传递任意参数
  • 原文地址:https://www.cnblogs.com/liuqiyun/p/6796088.html
Copyright © 2020-2023  润新知