[Oracle]高效的PL/SQL程序设计(三)--Package的优点
来源:互联网 发布:mac迅雷插件 编辑:程序博客网 时间:2024/05/20 17:07
使用Package的优点在于提供了必需的程序设计结构, 促进了模块化编程设计, 最重要的是Package断开了依赖链, 使得对某个数据库模式的改动不会导致整个模式的无效,从而避免了昂贵的重编译!
例如: 存在table t , procedure p1 p2, view v, function f, 它们之间引用关系如下:
- select name,type,referenced_name,referenced_type from user_dependencies
- where referenced_owner='SCOTT'
- order by name;
- F FUNCTION T TABLE
- P1 PROCEDURE V VIEW
- P2 PROCEDURE P1 PROCEDURE
- V VIEW T TABLE
当alter table t add y number时, 依赖于t的所有对象(包括传递依赖的对象, 即p1依赖于t, p2依赖于p1)就全部无效, 需要重新编译(如果代码很复杂, 就会有较大的消耗)
- select user_objects.object_name,user_objects.object_type,user_objects.status from user_objects
- F FUNCTION INVALID
- P1 PROCEDURE INVALID
- P2 PROCEDURE INVALID
- T TABLE VALID
- V VIEW INVALID
如果使用程序包之后table t , package pkg1,pkg2, view v, 可以发现PACKAGE BODY是依赖于PACKAGE, 而PKG2依赖于PKG1的PACKAGE, 而不是PACKAGE BODY
- select name,type,referenced_name,referenced_type from user_dependencies
- where referenced_owner='SCOTT'
- order by name;
- PKG1 PACKAGE BODY V VIEW
- PKG1 PACKAGE BODY PKG1 PACKAGE
- PKG2 PACKAGE BODY PKG2 PACKAGE
- PKG2 PACKAGE BODY PKG1 PACKAGE
- V VIEW T TABLE
当alter table t add y number时,会发现PK1的PACKAGE BODY会无效, 但是PKG2的PACKAGE BODY是有效的
- select user_objects.object_name,user_objects.object_type,user_objects.status from user_objects
- P1 PACKAGE BODY INVALID
- P2 PACKAGE BODY VALID
- P1 PACKAGE VALID
- P2 PACKAGE VALID
- T TABLE VALID
- V VIEW INVALID
(转载自:http://fhuan123.iteye.com/blog/659366)
- [Oracle]高效的PL/SQL程序设计(三)--Package的优点
- [Oracle]高效的PL/SQL程序设计(三)--Package的优点
- [Oracle]高效的PL/SQL程序设计(三)--Package的优点
- [Oracle]高效的PL/SQL程序设计(三)--Package的优点
- [Oracle]高效的PL/SQL程序设计(三)--Package的优点
- [Oracle]高效的PL/SQL程序设计(六)--%ROWTYPE的使用
- [Oracle]高效的PL/SQL程序设计(六)--%ROWTYPE的使用
- [Oracle]高效的PL/SQL程序设计(六)--%ROWTYPE的使用
- [Oracle]高效的PL/SQL程序设计(二)--标量子查询
- [Oracle]高效的PL/SQL程序设计(四)--批量处理
- [Oracle]高效的PL/SQL程序设计(四)--批量处理
- [Oracle]高效的PL/SQL程序设计(四)--批量处理
- [Oracle]高效的PL/SQL程序设计(二)--标量子查询
- [Oracle]高效的PL/SQL程序设计(二)--标量子查询
- [Oracle]高效的PL/SQL程序设计(四)--批量处理
- [Oracle]高效的PL/SQL程序设计(一)--伪列ROWNUM使用技巧
- [Oracle]高效的PL/SQL程序设计(五)--调用存储过程返回结果集
- [Oracle]高效的PL/SQL程序设计(五)--调用存储过程返回结果集
- java 向上转型和向下转型
- TelephonyManager类使用方法大全
- Android NVidia Tegra2平台Camera架构浅析
- string练练手
- 测试2----Javascript代码片段之Event封装
- [Oracle]高效的PL/SQL程序设计(三)--Package的优点
- Android Camera HAL设计初步
- ToolTip信息提示框的作用
- 知道的好
- QQ截图截取右键菜单的方法
- 黑马程序员-DataSet和DataReader实现用户登录
- Extjs学习总结之22GridPanel扩展
- mediawiki上传图片问题的解决办法
- Android的Camera架构介绍