以下的文章抓哟讲述的是Oracle使用游标触发器的实际存储过程,文章主要是通过实际应用代码的方式来引出相关实际应用的具体操作方案,以下就是文章的具体内容的描述,望你在浏览之后会有所收获。
createorreplaceprocedurePro_rateCalculateas --declare v_sc_iddim_service_center.sc_id%TYPE;
声明一个临时变量,用来存储维修中心id
v_count3number;
存储三个月内不合格的数量
v_allcount3number;
存取三个月内不合格的数量
v_count6number;
存取时间差,若改值大于0表示是六个月之前的维修中心
v_allcount6number; v_datediffnumber; v_ratenumber; cursorcur_sc_idis selectsc_idfromdim_service_center;
声明一个游标,此游标查出的是维修中心id
begin opencur_sc_id; LOOP FETCHcur_sc_id INTOv_sc_id;
读取一个游标数据到v_sc_id
EXITWHENcur_sc_id%NOTFOUND;
如果读到最后则退出
select count(*)计算主表中连续三个月不合格的数据的条数
intov_count3 fromdim_service_center innerjoinfact_repair_sheetondim_service_center.sc_id= fact_repair_sheet.sc_id innerjoinfact_vefpartonfact_vefpart.repid= fact_repair_sheet.repair_sheet_id where((fact_vefpart.vef_result1='2'
初核结果为不合格
andfact_vefpart.MAJOR_FLAG='2')
且不需要进行复核
or(fact_vefpart.vef_result2='2'))
或者复核结果为不合格
andfact_vefpart.ismajor='1'
且是主要备件
andfact_repair_sheet.close_date>Add_months(sysdate,-3)
为三个月内的数据q
anddim_service_center.sc_id=v_sc_id;
把不合格的备件数据的数量赋值给总数量计数器
select count(*)计算电话回访中连续三个月不合格的数据条数
intov_count3 fromfact_verify innerjoinfact_repair_sheetonfact_verify.repid= fact_repair_sheet.repair_sheet_id innerjoindim_service_centerondim_service_center.sc_id= fact_repair_sheet.sc_id wherefact_verify.
CALLSTATUS = ‘不合格’回访不合格
andfact_repair_sheet.close_date>Add_months(sysdate,-3)
三个月内
v_allcount3:=v_allcount3+v_count3;
计算连续三个月总的不合格数量
相关文章
标签:Oracle