Oracle9i的关系数据库实用教程04.ppt

  1. 1、本文档共66页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Oracle9i的关系数据库实用教程04

本章内容 4.1 PL/SQL简介 4.2 PL/SQL语法 4.3 存储过程 4.4 触发器 4.5 游标 4.6 包 4.7 函数 2、预定义异常 表4-3 常见异常情况表 3、自定义异常 异常不一定必须是oracle返回的系统错误,用户可以在自己的应用程序中创建可触发及可处理的自定义异常,调用异常处理需要使用Raise语句。 异常情态的传播指的是当在程序块的声明、执行、异常部分分别出现异常情态时,或在本块中没有相应的异常处理器时会将这个异常情态传播到哪里,会去激发那个块中的处理器。传播规则是这样的: 当一个异常情态是在块的执行部分引发的(最常见的),PL/SQL使用下面的规则确定激活哪个异常处理器。 (1)若当前块对该异常情态设置了处理器,则执行它并成功完成该块的执行,然后控制转给包含块。 (2)若当前块没有该处理器,则通过在包含块中引发它来传播异常情态。然后对包含块执行PL/SQL的异常操作。另外,无论是在声明部分引发了一个异常情态,还是在异常处理部分引发,则该异常情态将立即传播给包含块。在包含块引用上述规则进行异常情态的处理,即使在当前块设置了OTHERS处理器也不会被执行。 一、 存储过程的创建 创建存储过程的语句如下: CREATE[OR REPLACE] PROCEDURE<过程名> <参数1,「方式l]<数据类型1, <参数2,[ 方式2]<数据类型2, ……) IS|AS is_或as完全等价 BEGIN PL/SQL过程体 END<过程名> 过程参数有以下三种类型: (1)in参数类型:表示输入给过程的参数。 (2)out参数类型:表示参数在过程中将被赋值,可以传给过程体的外部。 (3)in out参数类型:表示该类参数既可以向过程体传值,也可以在过程体中赋值,以便向过程体外传值。 二、存储过程的调用 存储过程可以直接用EXECUT命令调用或PL/SQL程序块内部调用。 用EXECUT命令调用存储过程的格式如下: SQLexecute proc_name(par1,par2…); 存储过程也可以被另外的PL/SQL块调用,调用的语句是: declare par1,par2; begin proc_name(par1,par2…); end; 在调用前要声明变量par1,par2 三、存储过程的释放   当某个存储过程不再需要时,应将其从内存中删除,以释放它占用的内存资源。释放过程的语句格式如下: SQLdrop procedure proc_name; proc_name为过程名。 四、实例 编写存储过程,显示所指定雇员名所在的部门名和位置。 CREATE OR REPLACE PROCEDURE DeptMesg(pename emp.ename%TYPE, pdname OUT dept.dname%TYPE,ploc OUT dept.loc%TYPE) AS BEGIN SELECT dname,loc INTO pdname,ploc FROM emp,dept WHERE emp.deptno=dept.deptno AND emp.ename=pename; END; / VARIABLE vdname VARCHAR2(14); VARIABLE vloc VARCHAR2(13); EXECUTE DeptMesg(SMITH,:vdname,:vloc); PRINT vdname vloc; (1)作用范围清晰 (2)不要让触发器去完成Oracle后台已经能够完成的功能 (3)限制触发器代码的行数 (4)不要创建递归的触发器 (5)触发器仅在被触发语句触发时进行集中的,全局的操作,同用户和数据库应用无关。 一、触发器的设计规则 可以创建被如下语句所触发的触发器: (1)DML语句(DELETE,INSERT,UPDATE); (2)DDL语句(CREATE,ALTER, DROP); (3)数据库操作(SERVERERROR,LOGON,LOGOFF,STARTUP,SHUTDOWN)。 二、触发器的类型 1.使用CREATE TRIGGER语句创建触发器 使用CREATE TRIGGER语句创建触发器的语句格式如下: CREATE[OR REPLACE] TRIGGER name {BEFORE|AFTER } {event [ OR ... ]} ON table [FOR[EACH ] {ROW|STATEMENT}] [WHEN(condition)] plsql block|call procedures_statement 三、 触发器的创建 2.注意事项 (1)触发器可以声明为在对记录进行操作之前,在之前(检查约束之前和 IN

文档评论(0)

130****9768 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档