知识大全 oracle使用游标触发器的存储过程

Posted

篇首语:赋料扬雄敌,诗看子建亲。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 oracle使用游标触发器的存储过程相关的知识,希望对你有一定的参考价值。

  create or replace procedure Pro_rateCalculate as

   declare

  v_sc_id     dim_service_center sc_id%TYPE; 声明一个临时变量 用来存储维修中心id

  v_count     number; 存储三个月内不合格的数量

  v_allcount number; 存取三个月内不合格的数量

  v_count     number; 存取时间差 若改值大于 表示是六个月之前的维修中心

  v_allcount 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_count

  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_result = 初核结果为不合格

  and fact_vefpart MAJOR_FLAG = ) 且不需要进行复核

  or (fact_vefpart vef_result = )) 或者复核结果为不合格

  and fact_vefpart ismajor = 且是主要备件

  and fact_repair_sheet close_date > Add_months(sysdate ) 为三个月内的数据

  and dim_service_center sc_id = v_sc_id;

  v_allcount := v_count ; 把不合格的备件数据的数量赋值给总数量计数器

  select count(*) 计算电话回访中连续三个月不合格的数据条数

  into v_count

  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 ) 三个月内

  and dim_service_center sc_id = v_sc_id;

  v_allcount := v_allcount + v_count ; 计算连续三个月总的不合格数量

  

  select count(*) 计算主表中连续六个月不合格的数据的条数

  into v_count

  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_result = 初核结果为不合格

  and fact_vefpart MAJOR_FLAG = ) 且不需要进行复核

  or (fact_vefpart vef_result = )) 或者复核结果为不合格

  and fact_vefpart ismajor = 且是主要备件

  and fact_repair_sheet close_date > Add_months(sysdate ) 六个月内

  and dim_service_center sc_id = v_sc_id;

  v_allcount := v_count ; 把不合格的备件数据的数量赋值给总数量计数器

  select count(*) 计算电话回访中连续六个月不合格的数据条数

  into v_count

  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 )

  and dim_service_center sc_id = v_sc_id;

  v_allcount := v_allcount + v_count ; 计算连续六个月总的不合格数量

  select Add_months(sysdate ) creation_date

  into v_datediff

  from dim_service_center

  where sc_id = v_sc_id;

  if v_allcount > then

  v_rate := ;

  elsif v_allcount > then

  v_rate := ;

  elsif v_allcount = then

  v_rate := ;

  end if;

  if (v_allcount = ) then

  v_rate := ;

  end if;

  if (v_datediff < ) then

  v_rate := ;

  end if;

  insert into VEF_FUHERATE

  (vef_fuherate_id

  scid

  auto_rate

  change_rate

  status

  modify_status

  createdate

  updatedate)

  values

  (sys_guid() v_sc_id v_rate v_rate sysdate sysdate);

  end loop;

  close cur_sc_id;

cha138/Article/program/Oracle/201311/17432

相关参考

知识大全 oracle触发器的语法详解

  触发器是一种特殊的存储过程下面是触发器的详细说明  ORACLE触发器  ORACLE产生数据库触发器的语法为  create[orreplace]trigger触发器名触发时间触发事件  on表

知识大全 oracle中的游标使用静态游标

  游标是构建在PL/SQL中用来查询数据获取记录集的指针它让开发者一次访问结果集中一行记录  在oracle中提供了两种游标静态游标ref游标  静态游标静态游标是在编译的时候就被确定然后把结果集复

知识大全 如何调试oracle存储过程

  PL/SQL中为我们提供了调试存储过程的功能可以帮助你完成存储过程的预编译与测试  点击要调试的存储过程右键选择TEST  如果需要查看变量当然调试都需要在右键菜单中选择Adddebuginfor

知识大全 oracle存储过程分页代码

  oracle存储过程分页代码是怎么实现的我们来看下实验小编为您整理的方法吧!  /*******存储过程分页代码**********/  包头  createorreplacepackagepck

知识大全 java调用oracle存储过程

  一无返回值的存储过程  存储过程为  CREATEORREPLACEPROCEDURETESTA(PARAINVARCHARPARAIN VARCHAR) 

知识大全 一个简单的oracle分页存储过程的实现和调用

  在看了众多的分页存储过程以后发现都是针对sqlserver的而没有oracle的因此想写一个关于oracle的存储过程因为我用到的数据库是oracleoracle分页存储过程的思路于sqlserv

知识大全 Oracle 游标使用总结

Oracle游标使用总结  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!Oracle游标分为显示游标

知识大全 oracle存储过程创建表分区实例

  用存储过程创建数据表:创建时注意必须添加authidcurrent_user如果创建的表已存在存储过程继续执行但如不不加此关键语句存储过程将出现异常这个语句相当于赋权限例创建语句如下  复制代码代

知识大全 Oracle存储过程返回数组的方法

Oracle存储过程返回数组的方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  oracle存

知识大全 Ibatis调用Oracle存储过程

Ibatis调用Oracle存储过程  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  最近开始接触