Chapter 06_PLSQL程序设计[精].ppt
文本预览下载声明
所有的SQL 语句在上下文区内部都是可执行的,因此都有一个游标指向上下文区,此游标就是所谓的SQL游标(SQL cursor),即隐式游标。与显式游标不同,SQL 游标不被程序打开和关闭。 当一个DML语句执行时,PL/SQL内部打开一个游标,语句的结果被保存在4个游标属性中。 SQL%FOUND:布尔型,如果最近一次使用FETCH语句,有返回结果则为TRUE,否则为FALSE SQL%NOTFOUND:布尔型,如果最近一次使用FETCH语句,没有返回结果则为TRUE,否则为FALSE SQL%ROWCOUNT:数值型,返回到目前为止从游标缓冲区检索的元组数 隐式游标的使用 案例18:编写第一个游标,输出emp表中所有员工的信息。 案例19:练习(请各位先编写程序):一次性上涨全部雇员的工资(游标实现) 根据它所在的部门涨工资,规则: 10部门上涨10% 20部门上涨20% 30部门上涨30% 所有部门员工上涨后的工资最多不能超过5000,如果超过5000,则工资就为5000。 SQL%ISOPEN:如果游标已经打开,返回TRUE,否则为FALSE 游标是一块包含有查询信息的内存空间。在执行DML语句,游标被打开;当语句完成时,游标被关闭。 【案例20】 更新dept表,将部门号为80的部门名称修改为 总经办公室,如果没有这条记录,则向dept表写入该条记录 异常处理 在程序运行的时候出现的错误就称为异常,发生异常后,语句将停止执行,PL/SQL引擎立即将控制权转到PL/SQL块的异常处理部分,异常处理机制简化了代码的错误检测,PL/SQL中任何异常出现时,每个异常都应该对应一个异常码和异常信息,比如: declare v_sal emp.sal%type; begin select sal into v_sal from emp; end; ORA-01422: 实际返回的行数超出请求的行数 异常处理 一个优秀的程序都应该能够正确处理各种出错情况,并尽可能从错误中恢复。Oracle 提供异常情况(EXCEPTION)和异常处理(EXCEPTION HANDLER)来实现错误处理。 虽然在PL/SQL编程中,异常处理不是必须的,但建议编程人员要养成在PL/SQL编程中指定相应的异常。 异常处理是用来处理正常执行过程中未预料的事件,异 常处理包括预定义的错误和自定义错误。PL/SQL程序 块一旦产生异常而没有指出如何处理时,程序就会自动 终止整个程序运行 EXCEPTION when exception1 then statement1; when exception2 then statement2; …….. when others then statement; END; 其中:异常处理可以按任意次序排列,但 Others 必须放在最后。 异常处理概念 两种类型的异常:用户定义(user_define) 异常和预定义 ( predefined )异常。 为了方便oracle开发和维护,在oracle异常中,为常见的异常码定义了对应的异常名称,称为预定义异常; 当使用预定义异常处理时,应该了解PL/SQL 块的常见运行错误,并掌握与之相关的预定义异常处理,下表列出常用的系统异常 预定义的异常处理 案例21: too_many_rows系统异常使用举例 自定义异常: 除了预定义异常外,用户还可以自定义异常,自定义异常可 以让用户采用与PL/SQL引擎处理错误相同的方式进行处理,用户 自定义异常的两个关键点: 异常定义:在PL/SQL块的声明部分采用exception关键字来声 明异常,定义方法与定义变量相同,比如声明一个myexception 的异常方法是: myexception exception; 异常引发:在程序可执行区域,使用raise关键字来进行引发, 比如引发myexception的方法是: raise myexception; 请看案例22:自定义异常使用举例 引发应用程序异常: 在oracle开发中,遇到的系统异常都有对应的异常码,在应用系 统开发中,用户自定义的异常也可以指定一个异常码和异常信息, oracle系统为用户预留了自定义的异常码,其范围是-20000到- 20999之间的负整数,其语法是: raise_application_error(异常码,异常信息) 案例23:异常引发举例 表空间、数据库对象 同义词概念 序列的应用 视图的概念 索引的概念 表空间的概念 Oracle数据库对象
显示全部