Oracle使用游標觸發(fā)器存儲實操
如果你在Oracle游標觸發(fā)器的存儲的實際操作中,你對Oracle使用游標觸發(fā)器的存儲過程有不解之處時,你可以通過以下的文章對其的實際應用與功能有所了解,以下是文章的具體介紹,望你瀏覽完以下的內(nèi)容會有所收獲。
- create or replace procedure Pro_rateCalculate as
 - declare
 - v_sc_id dim_service_center.sc_id%TYPE;
 
聲明一個臨時變量,用來存儲維修中心id
v_count3 number; 存儲三個月內(nèi)不合格的數(shù)量
v_allcount3 number; 存取三個月內(nèi)不合格的數(shù)量
v_count6 number; 存取時間差,若改值大于0表示是六個月之前的維修中心
- v_allcount6 number;
 - v_datediff number;
 - v_rate number;
 - cursor cur_sc_id is
 - select sc_id from dim_service_center;
 
聲明一個游標,此游標查出的是維修中心id
- begin
 - open cur_sc_id;
 - LOOP
 - FETCH cur_sc_id
 - INTO v_sc_id;
 
在Oracle游標觸發(fā)器的存儲過程中我們需要讀取一個游標數(shù)據(jù)到v_sc_id
EXIT WHEN cur_sc_id%NOTFOUND; 如果讀到***則退出
select count(*) 計算主表中連續(xù)三個月不合格的數(shù)據(jù)的條數(shù)
- into v_count3
 - from dim_service_center
 - inner join fact_repair_sheet on dim_service_center.sc_id =
 - fact_repair_sheet.sc_id
 - inner join fact_vefpart on fact_vefpart.repid =
 - fact_repair_sheet.repair_sheet_id
 - where ((fact_vefpart.vef_result1 = '2'
 
初核結果為不合格
and fact_vefpart.MAJOR_FLAG = '2') 且不需要進行復核
or (fact_vefpart.vef_result2 = '2')) 或者復核結果為不合格
and fact_vefpart.ismajor = '1' 且是主要備件
and fact_repair_sheet.close_date > Add_months(sysdate, -3)為三個月內(nèi)的數(shù)據(jù)
and dim_service_center.sc_id = v_sc_id;
v_allcount3 := v_count3; 把不合格的備件數(shù)據(jù)的數(shù)量賦值給總數(shù)量計數(shù)器
select count(*) 計算電話回訪中連續(xù)三個月不合格的數(shù)據(jù)條數(shù)
- into v_count3
 - from fact_verify
 - inner join fact_repair_sheet on fact_verify.repid =
 - fact_repair_sheet.repair_sheet_id
 - inner join dim_service_center on dim_service_center.sc_id =
 - fact_repair_sheet.sc_id
 - where fact_verify.
 
CALLSTATUS = '不合格' 回訪不合格
and fact_repair_sheet.close_date > Add_months(sysdate, -3)三個月內(nèi)
and dim_service_center.sc_id = v_sc_id;
v_allcount3 := v_allcount3 + v_count3; 計算連續(xù)三個月總的不合格數(shù)量
以上的相關內(nèi)容就是對Oracle游標觸發(fā)器的存儲過程介紹,望你能有所收獲。
【編輯推薦】















 
 
 
 
 
 
 