zoukankan      html  css  js  c++  java
  • 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;

  • 相关阅读:
    Java多线程
    2018腾讯校招软件开发岗在线笔试题
    2018京东校招Java笔试题
    计模式之中介者、观察者
    值得注意的Java基础知识
    Java的内部类
    用静态内部类实现单例模式
    String,StringBuilder区别,一个是常量,一个是可变量
    ArrayList list = new ArrayList()在这个泛型为Integer的ArrayList中存放一个String类型的对象
    List<String> list=new ArrayList<String>(20);为什么要声明为List 而不是ArrayList<String>?
  • 原文地址:https://www.cnblogs.com/liuqiyun/p/6796088.html
Copyright © 2011-2022 走看看