OraclePlSql包(package)

上传人:平*** 文档编号:13359495 上传时间:2017-10-23 格式:DOC 页数:17 大小:155.27KB
返回 下载 相关 举报
OraclePlSql包(package)_第1页
第1页 / 共17页
OraclePlSql包(package)_第2页
第2页 / 共17页
OraclePlSql包(package)_第3页
第3页 / 共17页
OraclePlSql包(package)_第4页
第4页 / 共17页
OraclePlSql包(package)_第5页
第5页 / 共17页
点击查看更多>>
资源描述

《OraclePlSql包(package)》由会员分享,可在线阅读,更多相关《OraclePlSql包(package)(17页珍藏版)》请在金锄头文库上搜索。

1、Oracle PL/SQL 包(package)目录Oracle PL/SQL 包 (package).1一、 什么是 PL/SQL 包 .11、 PL/SQL 包举例 .2二、 PL/SQL 包的优点 .4三、 理解包说明 .4四、 理解包体 .6五、 包特性的例子 .7六、 包中私有项和公有项 .13七、 重载包级子程序 .13八、 包 STANDARD 是如何定义 PL/SQL 环境的 .14九、 系统包一览 .141、 关于 DBMS_ALERT 包 .142、 关于 DBMS_OUTPUT 包 .153、 关于 DBMS_PIPE 包 .154、 关于 UTL_FILE 包 .155

2、、 关于 UTL_HTTP 包 .16十、 包编写准则 .16一、 什么是 PL/SQL 包包就是一个把各种逻辑相关的类型、常量、变量、异常和子程序组合在一起的模式对象。包通常由两个部分组成:包说明和包体,但有时包体是不需要的。包说明(简写为 spec)是应用程序接口;它声明了可用的类型、变量、常量、异常、游标和子程序,包体(Body)部分完全定义游标和子程序,并对说明中的内容加以实现。 如下例所示,我们可以认为说明部分是一个可选接口,而包体是一个黑盒 。我们可以调试、增强或替换一个包体而不同改变接口(包说明) 。 我们可以从 SQL*Plus 中使用 CREATE PACKAGE 语句来创建

3、一个包。语法如下:CREATE OR REPLACE PACKAGE package_nameAUTHID CURRENT_USER | DEFINERIS | ASPRAGMA SERIALLY_REUSABLE;collection_type_definition .record_type_definition .subtype_definition .collection_declaration .constant_declaration .exception_declaration .object_declaration .record_declaration .variable_de

4、claration .cursor_spec .function_spec .procedure_spec .call_spec .PRAGMA RESTRICT_REFERENCES(assertions) .END package_name;CREATE OR REPLACE PACKAGE BODY package_name IS | ASPRAGMA SERIALLY_REUSABLE; collection_type_definition .record_type_definition .subtype_definition .collection_declaration .cons

5、tant_declaration .exception_declaration .object_declaration .record_declaration .variable_declaration .cursor_body .function_spec .procedure_spec .call_spec .BEGINsequence_of_statementsEND package_name;在包说明部分声明的内容都是公有的,对应用程序是可见的。我们必须在所有的其他内容(除了用于为一个特殊的函数命名的编译指示;这样的编译指示必须跟在函数说明之后) 声明之后才可以声明子程序。包体中的内容

6、有私有的,它实现了说明部分定义的细节内容,并且对应用程序是不可见的。紧跟着包体声明部分的是一个可选的初始化部分,它用于初始化包中的变量等。 AUTHID 语句决定了是否是所有的打包子程序都按定义者权限( 默认)或调用者权限执行,其中涉及到的模式对象是在定义者的模式中解析还是在调用者的模式中解析。 一个调用说明能让我们在 Oracle 数据词典中发布一个 Java 方法或外部 C 函数。调用说明靠把程序的名称、参数类型和返回类型映射到它们的 SQL 副本(SQL counterpart)中来发布程序。 1、 PL/SQL 包举例在下面的例子中,我们把一个记录类型、游标和两个 employment

7、 过程进行打包。要注意,过程 hire_employee 使用数据库序列 empno_seq 和函数 SYSDATE 分别插入到字段雇员编号和雇佣日期。 CREATE OR REPLACE PACKAGE emp_actions AS - specTYPE emprectyp IS RECORD(emp_id INT,salary REAL);CURSOR desc_salary RETURN emprectyp;PROCEDURE hire_employee(ename VARCHAR2,job VARCHAR2, mgr NUMBER,sal NUMBER,comm NUMBER,dept

8、no NUMBER);PROCEDURE fire_employee(emp_id NUMBER);END emp_actions;CREATE OR REPLACE PACKAGE BODY emp_actions AS - bodyCURSOR desc_salary RETURN emprectyp ISSELECT empno, salFROM empORDER BY sal DESC;PROCEDURE hire_employee(ename VARCHAR2,job VARCHAR2,mgr NUMBER,sal NUMBER,comm NUMBER,deptno NUMBER)

9、ISBEGININSERT INTO empVALUES (empno_seq.NEXTVAL,ename,job,mgr,SYSDATE,sal,comm,deptno);END hire_employee;PROCEDURE fire_employee(emp_id NUMBER) ISBEGINDELETE FROM empWHERE empno = emp_id;END fire_employee;END emp_actions; 只有在包说明部分的声明内容对应用程序才是可见可访问的;包体的详细实现是不可见不可访问的。所以,我们可以在不重新编译调用程序的前提下修改包体(实现) 。 二、

10、 PL/SQL 包的优点包提供了几个优点:模块化、方便应用程序设计、信息隐藏、附加功能和良好的性能。1、 模块化包能让我们把逻辑相关的类型、常量、变量、异常和子程序等放到一个命名的 PL/SQL模块中。每一个包都容易理解,包与包之间接口简单、清晰。这将有助于程序开发。 2、 轻松的程序设计设计应用程序时,我们首先要确定的是包说明中的接口信息。我们可以在没有包体的条件下编写并编译说明部分。然后引用该包的存储子程序也会被编译。在完成整个应用程序之前,我们是不需要完全实现包体部分的。3、 信息隐藏有了包,我们就可以指定哪些类型、常量、变量、异常和子程序等是公有(可见和可访问)或私有 (隐藏和不可访问) 。例如,如果一个包里包含了四个子程 序,其中三个是公有的一个是私有的。包就会隐藏私有子程序的实现,这样的话,如果实现内容发生改变,受到影响的只有包本身(不是我们的应用程序 )。同样, 对用户隐藏实现细节也能保证包的完整性。4、 附加功能打包公有变量和游

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号