oracle_存储过程_没有参数_更新过期申请单以及写日志事务回滚
2017-05-02 14:48
465 查看
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;
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;
相关文章推荐
- oracle_存储过程_没有参数_根据配置自动创建申请单以及写日志事务回滚
- [Oracle] DBA管理之"中止事务和修改日志回滚组"
- sql触发器和存储过程,索引,事务,游标,视图以及子查询等不同的参数、前后触等
- oracle中存储过程,存储函数,触发器,游标,索引,事务以及锁的概念,作用
- oracle 日志-oracle 异常事务回滚
- Oracle并行事务回滚相关参数及视图
- 《WF编程》系列之17 - 工作流与外部事件:工作流参数 居然有两个多月没有更新WF笔记,这段时间也许真的太忙了,毕业的事情,工作的事情,从今天起继续更新.
- Oracle 存储过程 实现 JAVA中的LIST输入参数
- Oracle系统紧急故障处理(数据文件、日志文件以及表空间损坏的处理)
- 事务日志回滚机制研究
- 事务日志回滚机制研究
- java中的arrayList传入oracle中的以数组(array)为参数的存储过程
- 补充部分官方文档里没有的Client Library以及代码提示Schema更新(三)
- 补充部分官方文档里没有的Client Library以及代码提示Schema更新(三)
- 数据库操作_连接SQL Server数据库示例;连接ACCESS数据库;连接到 Oracle 数据库示例;SqlCommand 执行SQL命令示例;SqlDataReader 读取数据示例;使用DataAdapter填充数据到DataSet;使用DataTable存储数据库表;将数据库数据填充到 XML 文件;10 使用带输入参数的存储过程;11 使用带输入、输出参数的存储过程示;12 获得数据库中表的数目和名称;13 保存图片到SQL Server数据库示例;14 获得插入记录标识号;Exce
- 在 oracle 数据库上构建 .NET程序以及数据库连接事务说明
- 补充部分官方文档里没有的Client Library以及代码提示Schema更新(二)
- 第十三篇 Oracle参数及参数文件(二) 持续更新......
- Oracle - Oracle系统紧急故障处理(数据文件、日志文件以及表空间损坏的处理)
- 事务日志回滚机制研究