使用Package的优点在于提供了必需的程序设计结构, 促进了模块化编程设计, 最重要的是Package断开了依赖链, 使得对某个数据库模式的改动不会导致整个模式的无效,从而避免了昂贵的重编译!

例如: 存在table t , procedure p1 p2, view v, function f, 它们之间引用关系如下:

Sql代码  
  1. select name,type,referenced_name,referenced_type from user_dependencies
  2. where referenced_owner='SCOTT'
  3. order by name;
Text代码  
  1. F       FUNCTION            T     TABLE
  2. P1    PROCEDURE       V     VIEW
  3. P2    PROCEDURE       P1   PROCEDURE
  4. V       VIEW                      T    TABLE

当alter table t add y number时, 依赖于t的所有对象(包括传递依赖的对象, 即p1依赖于t, p2依赖于p1)就全部无效, 需要重新编译(如果代码很复杂, 就会有较大的消耗)

Sql代码  
  1. select user_objects.object_name,user_objects.object_type,user_objects.status from user_objects
Text代码  
  1. F       FUNCTION                       INVALID
  2. P1    PROCEDURE                  INVALID
  3. P2    PROCEDURE                  INVALID
  4. T      TABLE                               VALID
  5. V      VIEW                                 INVALID

如果使用程序包之后table t , package pkg1,pkg2, view v, 可以发现PACKAGE BODY是依赖于PACKAGE, 而PKG2依赖于PKG1的PACKAGE, 而不是PACKAGE BODY

Java代码  
  1. select name,type,referenced_name,referenced_type from user_dependencies
  2. where referenced_owner='SCOTT'
  3. order by name;
Text代码  
  1. PKG1    PACKAGE BODY       V             VIEW
  2. PKG1    PACKAGE BODY       PKG1     PACKAGE
  3. PKG2    PACKAGE BODY       PKG2     PACKAGE
  4. PKG2    PACKAGE BODY       PKG1     PACKAGE
  5. V            VIEW                            T              TABLE

当alter table t add y number时,会发现PK1的PACKAGE BODY会无效, 但是PKG2的PACKAGE BODY是有效的

Sql代码  
  1. select user_objects.object_name,user_objects.object_type,user_objects.status from user_objects
Text代码  
  1. P1    PACKAGE BODY                         INVALID
  2. P2    PACKAGE BODY                         VALID
  3. P1    PACKAGE                                     VALID
  4. P2    PACKAGE                                     VALID
  5. T      TABLE                                           VALID
  6. V      VIEW                                              INVALID

(转载自:http://fhuan123.iteye.com/blog/659366)

[Oracle]高效的PL/SQL程序设计(三)--Package的优点相关推荐

  1. 每周一书《Oracle 12 c PL(SQL)程序设计终极指南》

    本周为大家送出的书是<Oracle 12 c PL(SQL)程序设计终极指南>,此书由机械工业出版社出版, 孙风栋,王澜,郭晓惠 著. 内容简介: <Oracle 12c PL/SQ ...

  2. 09 高效的PL/SQL程序设计

    程序包 Package 断开了依赖链 实验依赖关系: <1> 首先不使用包 -- 创建表 CREATE table t (x int); -- 创建视图 create view v as ...

  3. 《Oracle PL/SQL程序设计(第5版)》一一2.4 执行必要的PL/SQL任务

    本节书摘来自异步社区出版社<Oracle PL/SQL程序设计(第5版)>一书中的第2章,第2.4节,作者:[美]Steven Feuerstein , Bill Pribyl,更多章节内 ...

  4. oracle pl/sql 程序设计 历史笔记整理

    20131016 周三 oracle pl/sql 程序设计 第2章 创建并运行pl/sql代码 sqlplus yjkhecc/yjkhecc@10.85.23.92:1521/orcl 在java ...

  5. Oracle PL/SQL 程序设计读书笔记 - 第7章 使用数据

    Oracle PL/SQL 程序设计读书笔记 - 第7章 使用数据 Oracle PL/SQL 程序设计读书笔记 - 第7章 使用数据 7.1 程序数据的命名 PL/SQL要求在给数据结构命名的时候应 ...

  6. Oracle PL/SQL 程序设计读书笔记 - 第14章 DML和事务管理

    Oracle PL/SQL 程序设计读书笔记 - 第14章 DML和事务管理 Oracle PL/SQL 程序设计读书笔记 - 第14章 DML和事务管理 ACID原则:即一个事务具有原子性.一致性. ...

  7. oracle 12c sql图形化,Oracle 12c PL/SQL程序设计终极指南

    Oracle 12c PL/SQL程序设计终极指南 作者:孙风栋;王澜;郭晓惠 出版日期:2015年06月 文件大小:11.73M 支持设备: ¥60.00在线试读 适用客户端: 言商书局 iPad/ ...

  8. 《Oracle PL/SQL程序设计(第5版)》一一2.5 编辑PL/SQL的环境

    本节书摘来自异步社区出版社<Oracle PL/SQL程序设计(第5版)>一书中的第2章,第2.5节,作者:[美]Steven Feuerstein , Bill Pribyl,更多章节内 ...

  9. Oracle PL/SQL 第三章--运算符与表达式

    Oracle PL/SQL 第三章--运算符与表达式 目录 Oracle PL/SQL 第三章--运算符与表达式 1.运算符分类 1.1.算术运算符 1.2.关系运算符 1.3.比较运算符 1.4.逻 ...

最新文章

  1. 内部类--毕向东Java基础教程学习笔记
  2. 如何检测当前的ABAP report是运行在inactive版本下
  3. linux部署redis详细步骤
  4. Algorithm:字典序最小问题
  5. 44特征02——相似对角化与方幂、代数重数与几何重数、可对角化的概念、相似对角化的条件、矩阵方幂的计算
  6. 【转】7个顶级心理预言
  7. 编译原理完整学习笔记(一):引论
  8. Javascript你必须要知道的面试题
  9. 微信小程序服务通知模板的实现
  10. div+css静态网页设计 web网页设计实例作业 ——中国水墨风的小学学校网站(6页) 专题网页设计作业模板 学校物静态HTML网页模板下载
  11. 阿里云cdn以及阿里云负载均衡配置方法
  12. bootstrap表格标题Caption位于表格下方的原因
  13. 2018年中高级前端面试题目小结
  14. 机器学习:非负矩阵分解(NMF)
  15. bmp格式图片缩放(位图缩放)
  16. R语言基础入门(全)
  17. Mysql 死锁和死锁的解决方案
  18. 求解矩阵方程耗时比较(直接求逆,Qr分解,LU分解)
  19. VB6.0中提示:该部件的许可证信息没有找到,在设计环境中,没有合适的许可证使用该功能”的解决办法
  20. Vue中常见的性能优化,项目优化/单页面性能优化,Vue中六大优化方案

热门文章

  1. 【Luogu】【关卡2-2】交叉模拟(2017年10月)
  2. gulp与grunt对比
  3. Effective C++条款01: 视C++为一个语言联邦
  4. 算法题007 计算n的阶乘
  5. Android支持横行滚动的ListView控件
  6. ASP.NET 2.0 中的资源与本地化
  7. 设计模式---装饰模式
  8. 【BZOJ 3165】 [Heoi2013]Segment 李超线段树
  9. 如何使用PHP自动备份数据库
  10. 把docker当做绿色打包工具