oracle游标和触发器,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)--为三个月内的数据

and dim_service_center。sc_id = v_sc_id;。

全部

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值