我是靠谱客的博主 满意洋葱,最近开发中收集的这篇文章主要介绍记录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; – 查询当前用户下全部触发器

最后

以上就是满意洋葱为你收集整理的记录Oracle trigger中用到的循环语法的全部内容,希望文章能够帮你解决记录Oracle trigger中用到的循环语法所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(49)

评论列表共有 0 条评论

立即
投稿
返回
顶部