第9章节 plSQL.pptVIP

  1. 1、本文档共87页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第9章节 plSQL

declare v_temp number(4); begin select empno into v_temp from emp where deptno=10; exception when too_many_rows then dbms_output.put_line(太多记录了); when others then dbms_output.put_line(error); End; 1 系统预定义异常 异常名称 ORACLE错误 说明 CURSOR_ALREADY_OPEN ORA-6511 试图打开一个已打开的光标 DUP_VAL_ON_INDEX ORA-0001 试图破坏一个唯一性限制 INVALID_CURSOR ORA-1001 试图使用一个无效的光标 INVALID_NUMBER ORA-1722 试图对非数字值进行数字操作 LOGIN_DENIED ORA-1017 无效的用户名或者口令 NO_DATA_FOUND ORA-1403 查询未找到数据 NOT_LOGGED_ON ORA-1012 还未连接就试图进行数据库操作 PROGRAM_ERROR ORA-6501 内部错误 ROWTYPE_MISMATCH ORA-6504 主变量和光标的类型不兼容 STORAGE_ERROR ORA-6500 内部错误 TIMEOUT_ON_RESOURCE ORA-0051 发生超时 练一练 查询并输出由用户输入的雇员编号及其部门名称,要求有异常处理。 1编写一个PL/SQL,计算5的阶乘并打印出来。(使用3种循环控制方式实现)。 2根据表emp中deptno字段的值,为姓名为‘JONES’的雇员修改工资;若部门号为10,则工资加100;部门号为20,加200;其他部门加400。 2非预定义异常错误 Oracle 定义了几千个异常,绝大多数只有错误编号和 相关描述,仅仅命名了若干个最常被用到的异常 。 可以使用 PRAGMA EXCEPTION_INIT(exception_name,oracle_error_code); 来将这些只有错误编号和相关描述的异常关联一个名字,然后就可以像对待预定义异常一样对待它了。 pragma exception_init 是一个编译时运行的函数,它只能出现在代码的声明部分,而异常名字必须在此之前被定义。 Declare c_null_error exception; pragma exception_init(c_null_error,-1400); Begin insert into dept values(null,’demo1’,’bj’); exception when c_null_error then dbms_output.put_line(‘不能向部门编号列插入null’); End; 3 记录异常 首先创建一张表,用来记录异常。 create table errorlog ( id number primary key, errcode number, errmsg varchar2(1024), errdate date ) 程序代码: declare v_deptno dept.deptno%type :=10; v_errcode number; v_errmsg varchar2(1024); 创建一个序列,用于记录当前的异常序号。 Create sequence seq_errorlog_id start with 1 increment by 1 begin delete from dept where deptno=v_deptno; commit; exception when others then rollback; v_errcode:=SQLCODE; v_errmsg:=SQLERRM; insert into errorlog values(seq_errorlog_id.nextval,v_errcode,v_errmsg,sysdate); commit; end; 9.5 游标 游标是一种PL/SQL控制结构,可以对SQL语句的处理进行显式控制,便于对游标的行数据逐条进行处理。 游标分类 显式游标 隐式游标 1、显式游标 显式游标是必须通过编写必要的PL/SQL例程来进行管理的游标。游标的整个生命期都在用户的控制之下,因此,用户可以详细地控制PL/SQL怎样在结果集中访问记录。

文档评论(0)

qiwqpu54 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档