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;

  • 相关阅读:
    wifi 天线
    Ubuntu下通过SSH远程登录服务器的方法
    wifi 天线
    免费20G全能空间正在火爆开放中。。。。。要的抓紧时间申请了.
    php设计模式 Mediator (中介者模式)
    DEDE图片集上传图片时出错显示(FILEID)的解决办法
    SPL spl_autoload_register与__autoload方法使用示例浅谈
    mysql_fetch_array()和mysql_fetch_assoc()两个函数的区别
    nginx多站设置
    php中echo(),print(),print_r()的区别
  • 原文地址:https://www.cnblogs.com/liuqiyun/p/6796088.html
Copyright © 2011-2022 走看看