以下的文章抓喲講述的是Oracle使用游標觸發器的實際存儲過程,文章主要是通過實際應用代碼的方式來引出相關實際應用的具體操作方案,以下就是文章的具體內容的描述,望你在浏覽之後會有所收獲。
- create or replace procedure Pro_rateCalculate as
- --declare
- v_sc_id dim_service_center.sc_id%TYPE;
聲明一個臨時變量,用來存儲維修中心id
- v_count3 number;
存儲三個月內不合格的數量
- v_allcount3 number;
存取三個月內不合格的數量
- 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;
讀取一個游標數據到v_sc_id
- EXIT WHEN cur_sc_id%NOTFOUND;
如果讀到最後則退出
select count(*)計算主表中連續三個月不合格的數據的條數
- 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)
為三個月內的數據q
- and dim_service_center.sc_id = v_sc_id;
把不合格的備件數據的數量賦值給總數量計數器
select count(*)計算電話回訪中連續三個月不合格的數據條數
- 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)
三個月內
- v_allcount3 := v_allcount3 + v_count3;
計算連續三個月總的不合格數量
上述的相關內容就是對Oracle使用游標觸發器的存儲過程的描述,希望會給你帶來一些幫助在此方面。