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;

  • 相关阅读:
    HAProxy、Keepalived 在 Ocatvia 的应用实现与分析
    Octavia 的 HTTPS 与自建、签发 CA 证书
    Octavia 创建 loadbalancer 的实现与分析
    OpenStack Rally 质量评估与自动化测试利器
    自建 CA 中心并签发 CA 证书
    Failed building wheel for netifaces
    通过 vSphere WS API 获取 vCenter Datastore Provisioned Space 置备空间
    OpenStack Placement Project
    我们建了一个 Golang 硬核技术交流群(内含视频福利)
    没有图形界面的软件有什么用?
  • 原文地址:https://www.cnblogs.com/liuqiyun/p/6796088.html
Copyright © 2011-2022 走看看