概述
我们在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中用到的循环语法所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复