ORACLE触发器
触发器
q 触发器是当特定事件出现时自动执行的存储过程
q 特定事件可以是执行更新的DML语句和DDL语句
q 触发器不能被显式调用
q 触发器的功能:
q 自动生成数据
q 自定义复杂的安全权限
q 提供审计和日志记录
q 启用复杂的业务逻辑
创建触发器的语法:
CREATE [OR REPLACE] TRIGGER trigger_name
AFTER | BEFORE | INSTEAD OF
[INSERT] [[OR] UPDATE [OF column_list]]
[[OR] DELETE]
ON table_or_view_name
[REFERENCING {OLD [AS] old / NEW [AS] new}]
[FOR EACH ROW]
[WHEN (condition)]
pl/sql_block;
触发器由三部分组成:
q 触发器语句(事件)
q 定义激活触发器的 DML 事件和 DDL 事件
q 触发器限制
q 执行触发器的条件,该条件必须为真才能激活触发器
q 触发器操作(主体)
q 包含一些 SQL 语句和代码,它们在发出了触发器语句且触发限制的值为真时运行
创建触发器
CREATE OR REPLACE TRIGGER first_emp_trg
AFTER INSERT
ON emp
FOR EACH ROW
BEGIN
IF (:NEW.sal < 10000) THEN
DBMS_OUTPUT.PUT_LINE('less 10000');
ELSE
DBMS_OUTPUT.PUT_LINE('ge 10000');
END IF;
END;
SQL> insert into emp(empno,ename,sal) values(8102,'HuangPei',10000);
ge 10000
1 row inserted
SQL> insert into emp(empno,ename,sal) values(8103,'HuangPei',100);
less 10000
1 row inserted
查询触发器
SQL> select trigger_name,trigger_type,triggering_event,status from user_triggers;
TRIGGER_NAME TRIGGER_TYPE TRIGGERING_EVENT STATUS &n
相关文档:
1
2
3
作者: 来源: 更新日期:2006-01-04
5
6
7
建立表空间
8
9
CREATE TABLESPACE data01
10
DATAFILE '/oracle/oradata/d ......
http://tech.163.com/05/0701/10/1NIODMQS00091589.html
因为在PL/SQL 中并没有数组.
这是偶查资料找的范例和自己写的范例来解释如何在PL/SQL 中使用数组. 也许很多人已知道, 不过就是让不知道的朋友们了解一下吧。
----------------------
单维数组
------------------------
DECLARE
TYPE
emp_ssn_array IS TA ......
Oracle JDeveloper 10g Release Download
Oracle JDeveloper 10g (version 9.0.5.1, build 1605) for Windows NT/2000/X, Linux, Solaris, and HP-UX.
http://download.oracle.com/otn/java/jdeveloper/905/jdev9051.zip
http://download-east.oracle.com/otn/java/jdeveloper/905/jdev9051.zip
http://download-west ......
一、 内存结构
共享池:分为库高速缓存和字典高速缓冲区
库高速缓存,用于存储经过语法分析并且正确的SQL语句,并随时准备执行。
字典高速缓冲区,存储登陆到ORACLE的用户名,及这些用户有哪些数据库对象以及这些数据库对象的位置。
数据缓 ......
程序包
包主体/规范名字一样
包主体/规范中的对应参数必须类型及名字一样
只能使用强类型的REF游标
创建程序包规范
create or replace package my_pack
is
procedure find_emp_proc(eno emp.empno%type);
function fin ......