1.程序包就相当于JAVA中的类
2.程序包效率高的原因是:当程序首次调用包内函数或过程时,ORACLE将整个包调入内存,当再次访问包内元素时,ORACLE直接从内存中读取,而不需要进行磁盘I/O操作,从而使程序执行效率得到提高。
3.包有两部分组成
(1).包说明(规范)(PACKAGE SPECIFICATION):包说明部分声明包内数据类型、变量、常量、游标、子程序和异常错误处理等元素,这些元素为包的公有元素。
(2).包体(PACKAGE BODY):包主体则是包定义部分的具体实现,它定义了包定义部分所声明的游标和子程序,在包主体中还可以声明包的私有元素。
包说明和包主体分开编译,并作为两部分分开的对象存放在数据库字典中,可查看数据字典user_source, all_source, dba_source,分别了解包说明与包主体的详细信息。
4.包名是唯一的,但不同包中的公有组件可以是相同的,通过包名.公有组件名来区分
5.创建包体时,有以下几点需要注意:
包体只能在包说明被创建或编译后才能进行创建或编译。
在包体中实现的过程、函数、游标的名称必须与包说明中的过程、函数、游标一致,包括名称、参数的名称以及参数的模式(IN、OUT、IN OUT)。并建设按包说明中的次序定义包体中具体的实现。
在包体中声明的数据类型、变量、常量都是私有的,只能在包体中使用而不能被印刷体外的应用程序访问与使用。
在包体执行部分,可对包说明,包体中声明的公有或私有变量进行初始化或其它设置。
6. 在数据字典中查看程序包规范和包主体的信息
select object_name,object_type,status from user_objects
where lower(OBJECT_NAME) = 'pkg_staff'
参考文章:http://www.cnblogs.com/huyong/archive/2011/05/26/2057973.html