4-包、异常.pptVIP

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

包、异常 上节回顾 游标属性、游标操作 游标变量的使用 本章目标 了解包的概念和构成 掌握包头和包体的定义和使用 学会使用预定义异常 学会自定义异常的定义和使用 本章内容 本章内容: 包的概念、包的作用、包操作和异常的使用 本章重点: (1)包操作(2) 异常的使用 本章难点:自定义异常 包 包就是一个把各种逻辑相关的类型、常量、变量、异常和子程序组合在一起的模式对象。包通常由两个部分组成:包说明和包体,但有时包体是不需要的。包说明定义了可用的类型、变量、常量、异常、游标和子程序,包体部分完全定义游标和子程序,并对说明中的内容加以实现。 内置程序包 STANDARD 和 DBMS_STANDARD:定义和扩展 PL/SQL 语言环境 DBMS_LOB:提供对 Oracle LOB 数据类型进行操作的功能 DBMS_LOCK:用户定义的锁 DBMS_OUTPUT:处理 PL/SQL 块和子程序输出调试信息 DBMS_SESSION:提供 ALTER SESSION 命令的 PL/SQL 等效功能 DBMS_ROWID:获得 ROWID 的详细信息 DBMS_RANDOM:提供随机数生成器 DBMS_SQL:允许用户使用动态 SQL,构造和执行任意 DML 或 DDL 语句 SQL语句方式创建包规范 (1)创建包头 语法格式 包的创建分为包头的创建和包体的创建两部分。 (1) 包头 create or replace package [schema.]packge_name /*包头名称*/ is∣as pl/sql_package_spec /*定义过程、函数等*/ 创建包体 创建包体 create or replace package body [schema.]package_name is∣as pl/sql_package_body 说明: 包主体包含了在包头中声明的过程与函数的代码 包主体的名称必须与包头的名称相同 包主体中的过程和函数的头部代码必须与包头中声明的过程或函数完全匹配。 包体是一个独立于包头的数据字典对象。包体只能在包头完成编译后才能进行编译。 重载 在包的内部,过程和函数可以被重载。也就是说,可以有一个以上的名称相同,但参数不同的过程或函数。 参数不同:参数数量、次序和参数类型不同 重载 重载要受到下列限制: (1) 仅参数名不同,不能重载。 procedure p(p1 number); procedure p(p2 number); (1) 参数的输入输出模式不同,这两个子程序不能重载。 procedure p(p1 in number); procedure p(p1 out number); (2) 仅返回类型不同不可以重载。 function f return date; function f return number; (3) 参数类型或返回类型属于相同的子类型,则不可以重载。 procedure f(p1 in char); procedure f(p1 in varchar2); 异常 在pl/sql中,警告或错误被称为异常。异常可以是内部(运行时系统)定义的或是用户定义的。内部定义的案例包括除零操作和内存溢出等。一些常见的内部异常都有一个预定义的名字,如zero_divide和storage_error等。错误发生时,异常就会被抛出。也就是说,正常的执行语句会被终止,控制权被转到pl/sql块的异常控制部分或子程序的异常控制部分。内部异常会由运行时系统隐式地抛出,而用户定义异常必须显式地用raise语句抛出,raise语句也可以抛出预定义异常。 预定义异常 当我们的PL/SQL程序与Oracle规则相冲突或超过系统相关(system-dependent)的限制时,内部异常就会被抛出。每个 Oracle错误都有一个错误编号,但异常只能按名称捕获,然后被处理。所以,PL/SQL把一些常见Oracle错误定义为异常。例如,如果 SELECT INTO语句查询不到数据时,PL/SQL就会抛出预定义异常NO_DATA_FOUND。要控制其它Oracle异常,我们可以使用OTHERS处理器。 【例】zero_divide异常。 预定义异常 除了除零错误外,PL/SQL还有很多系统预定义异常,下表列出了常见的PL/SQL异常,通过检测这些异常,用户可以查找PL/SQL程序产生的错误。 用户定义异常 声明PL/SQL异常 异常只能在PL/SQL块、子程序或包的声明部分声明。声明异常的语法为: dec

文档评论(0)

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

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

1亿VIP精品文档

相关文档