Oracle数据库11g新特性:高效的PL/SQL编码
2008-12-16 13:03:47 来源:WEB开发网在这种情况下,触发器的执行顺序 非常重要。如果 tr_pay_risk_rating 没有在另一个触发器之前触发,就无法设置正确的变量,并且设置将无法正确实现要求。在以前,唯一可能的方法是,将所有逻辑放在一段代码中,并通过在代码中对逻辑进行排序来强制执行。
在 Oracle 数据库 11g 中,您可以在触发器创建脚本中放置一条子句,来强制对触发器进行排序。以下是带有该子句的触发器的上半部分:
create or replace trigger tr_pay_follow_up
before update
on payments
for each row
follows tr_pay_risk_rating
begin
... and so on ...
该子句 (FOLLOWS <triggerName>) 强制触发器在指定触发器之后触发。您可以通过运行在前面看到的更新脚本来进行测试。
SQL> @upd_pay
This is tr_pay_risk_rating
This is tr_pay_follow_up
1 row updated.
SQL> select * from payments;
PAY_ID CREDIT_CARD_NO AMOUNT P RISK_R F
---------- ---------------- ---------- - ------ -
1 1234567890123456 100000 C HIGH Y
1 row selected.
列按照预期方式正确填充。另外,注意触发器的正确排序,以确定您打算执行的操作。
触发器排序可让您获得模块化代码的优势,同时确保它们能够以正确的顺序执行。
如果什么都不做,使用 CONTINUE
在全部功能中,直到现在,PL/SQL 还缺少一个重要语法:如何指示它什么都不做,转至循环结尾,然后再次循环。
在 Oracle 数据库 11g 中,PL/SQL 具有一个名为 CONTINUE 的新结构,可在循环中使用。该语句可将逻辑移到循环结尾,然后再移到循环开头。下面是一个小型示例,演示了当计数器不是 10 的倍数时,控制如何移到循环结尾。
- ››oracle 中 UPDATE nowait 的使用方法
- ››Oracle ORA-12560解决方法
- ››Oracle 10g RAC 常用维护命令
- ››Oracle如何在ASM中定位文件的分布
- ››Oracle的DBMS_RANDOM.STRING 的用法
- ››oracle 外部表导入时间日期类型数据,多字段导入
- ››Oracle中查找重复记录
- ››oracle修改用户登录密码
- ››Oracle创建删除用户、角色、表空间、导入导出等命...
- ››Oracle中登陆时报ORA-28000: the account is lock...
- ››Oracle数据库在配置文件中更改最大连接数
- ››Oracle中在pl/sql developer修改表的两种方式
更多精彩
赞助商链接