记录Oracle trigger中用到的循环语法

我们在Oracle中编写触发器时会常常用到触发器,今天记录一下在学习过程中用到的知识点,触发器中循环方法又3种,1. for循环;2. while循环; 3.loop循环;

1. for循环
begin
    for 新变量 in 有值变量 loop     // 其实类似JAVA中的for循环
         业务逻辑...
    end loop ;
end;

例1:

// 作用:当test表中数据发生变化时,dept_id表中的数据也会变化(dept_id表中保存test表的分组统计结果)
CREATE OR REPLACE TRIGGER EMP_INFO   // 触发器名称为EMP_INFO
 AFTER INSERT OR UPDATE OR DELETE ON test
DECLARE
 CURSOR CUR_EMP IS
  select t_id as id,count(t_name) name ,sum(t_age) as age from test group by t_id;
BEGIN
 DELETE dept_id;            // 触发时首先删除映射表信息
 FOR V_EMP IN CUR_EMP LOOP  // 循环CUR_EMP变量
  --插入数据
  INSERT INTO dept_id
  VALUES
   (V_EMP.id, V_EMP.name, V_EMP.age);
 END LOOP;
END;
2. while循环
 begin
    while 循环条件 loop     // 其实类似JAVA中的while循环
       业务逻辑...
    end loop ;
 end;
3. loop循环
 begin
     loop 
          业务逻辑1...
          exit when 判断条件 ;
          业务逻辑2...
     end loop ;
 end;

例2:
– loop循环用法 (输出1到10)

declare v_num number(2) := 0;  
begin   
  loop  
    v_num := v_num + 1;  
    exit when v_num > 10;  
     /* if(v_num > 9) then  
        exit;  
     end if;*/  
    dbms_output.put_line(v_num);   
  end loop;    
end;  

例3:
– while loop循环用法 (输出1到10)

declare v_num number(2) := 0;  
begin   
  while v_num < 10 loop  
     v_num := v_num + 1;  
     dbms_output.put_line(v_num);  
  end loop;    
end;  

例4:
– for loop循环用法1 (输出1到10)

declare v_num number(2) := 99;  
begin  
  for v_n in 1 .. v_num loop      // 循环1到99 (for 、in、loop、exit、when、end loop 等都是关键字)
     exit when v_n > 10;          // 当v_n大于10时退出循环
     dbms_output.put_line(v_n);   // 将值打印输出
  end loop;  
end; 

例5:
– for loop循环用法2 (输出某个表的序号、姓名字段)

begin  
   for v_n in(select id,name from emp) loop   
      dbms_output.put_line(v_n.id || ' , ' || v_n.name);  
   end loop;  
end;

chr(10) 代表换行,更多cha(XX)对应的意义可参考:https://blog.csdn.net/liqfyiyi/article/details/6936478


启用和禁用触发器

ALTER TRIGGER trigger_name DISABLE; – 禁用触发器

ALTER TRIGGER trigger_name ENABLE; – 启用触发器

SELECT * FROM ALL_TRIGGERS; – 查询当前用户下全部触发器

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值