包-函数-触发器的管理24 PL-SQL讲义 课件.ppt
文本预览下载声明
管理过程、包、触发器 目标 结束本节课后,应当完成如下目标: 创建存储过程和执行存储过程 创建函数 创建包 创建触发器 块类型 匿名 过程 函数 程序构造类型 创建过程 CREATE [OR REPLACE] PROCEDURE Procedure_name [ (argment [ { IN | IN OUT }] Type, argment [ { IN | OUT | IN OUT } ] Type { IS | AS } 类型.变量的说明 BEGIN 执行部分 EXCEPTION 可选的异常错误处理程序 END; 用户连接登记记录; CREATE table logtable (userid VARCHAR2(10), logdate date); 创建过程、执行过程 CREATE OR REPLACE PROCEDURE logexecution IS BEGIN INSERT INTO logtable (userid, logdate) VALUES (USER, SYSDATE); END; exec logexecution; 使用过程删除一个表中的记录 CREATE OR REPLACE PROCEDURE DelEmp(v_empno IN emp.empno%TYPE) AS no_result EXCEPTION; BEGIN DELETE FROM emp WHERE empno=v_empno; IF SQL%NOTFOUND THEN RAISE no_result; END IF; DBMS_OUTPUT.PUT_LINE(emplooye number||v_empno||was deleted!); EXCEPTION WHEN no_result THEN DBMS_OUTPUT.PUT_LINE(no row found!); WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE(other errors!); END DelEmp ; 触发器 触发器在数据库里以独立的对象存储,它与存储过程不同的是,存储过程通过其它程序来启动运行或直接启动运行,而触发器是由一个事件来启动运行。即触发器是当某个事件发生时自动地隐式运行。并且,触发器不能接收参数。所以运行触发器就叫触发或点火(firing)。ORACLE事件指的是对数据库的表进行的INSERT、UPDATE及DELETE操作或对视图进行类似的操作。ORACLE将触发器的功能扩展到了触发ORACLE,如数据库的启动与关闭等。 触发器类型 DML触发器 ORACLE可以在DML语句进行触发,可以在DML操作前或操作后进行触发,并且可以对每个行或语句操作上进行触发。 替代触发器 由于在ORACLE里,不能直接对由两个以上的表建立的视图进行操作。所以给出了替代触发器。它就是ORACLE 专门为进行视图操作的一种处理方法。 系统触发器 ORACLE 提供了第三种类型的触发器叫系统触发器。它可以在ORACLE数据库系统的事件中进行触发,如ORACLE系统的启动与关闭等。 触发器组成 触发事件:即在何种情况下触发TRIGGER; 例如:INSERT, UPDATE, DELETE。 触发时间:即该TRIGGER 是在触发事件发生之前(BEFORE)还是之后(AFTER)触发,也就是触发事件和该TRIGGER 的操作顺序。 触发器本身:即该TRIGGER 被触发之后的目的和意图,正是触发器本身要做的事情。 例如:PL/SQL 块。 触发类型:说明触发器内定义的动作被执行的次数。即语句级(STATEMENT)触发器和行级(ROW)触发器。 语句级(STATEMENT)触发器:是指当某触发事件发生时,该触发器只执行一次; 行级(ROW)触发器:是指当某触发事件发生时,对受到该操作影响的每一行数据,触发器都单独执行一次 创建触发器 CREATE [OR REPLACE] TRIGGER trigger_name {BEFORE | AFTER | INSTEAD OF} {INSERT | DELETE | UPDATE [OF column [, column …]]} ON {[schema.] table_name | [schema.] view_name} [REFERENCING {OLD [AS] old | NEW [AS] new| PARENT as parent}] [FOR EACH ROW ] [W
显示全部