一、程序包的相关知识
1。定义与说明
a。 相关对象的封装
b。 程序包的各部分
- 程序包规格说明
声明子程序
- 程序包主体
定义子程序
2。使用程序包的优点
- 模块化
- 更轻松的应用程序设计
- 信息隐藏
- 新增功能
- 性能更佳
3。
公有项和私有项的区别
公有项:在程序包说明部分定义的变量、过程、函数
私有项:在程序包主体部分定义的变量、过程、函数
公有项
私有项
可以在程序包之外引用
不能在程序包之外引用
是在程序包规格说明中定义的
是在程序包主体中定义的
用于全局目的
用于局部目的
二、程序包创建说明
1。
程序包规格说明
(1)、使用Create Package命令进行创建
(2)、包含公用对象和类型
(3)、声明类型、常量、变量、异常、游标和子程序
(4)、可以在没有程序包主题的情况下存在
(5)、可以重载
- 程序包中的多个子程序可以具有相同的名称
- 它们的形参是不同的
- 只能位于打包的子程序中
- 限制
a。
如果子程序的参数仅名称或模式不同,则不能重载
b。 不能基于其返回类型重载子程序
2。程序包主体
(1)、使用Create Package body 命令进行创建
(2)、包含子程序和游标的定义
(3)、包含私有声明
(4)、不能在没有程序包规格说明的情况下独立存在
3。
程序包的调用
包名。类型名;
包名。函数名[参数表];
包名。。过程名[参数表];
(1)、 Package-name。type-name
(2)、 Package-name。object-name
(3)、 Package-name。
subprogram-name
其中,Package-name 是程序包名称,type-name是类型名称,
object-name是对象名称,subprogram-name 是子程序名称
--示例
DBMS_output。put_line(Hello);
(4)、对于返回参数是游标类型的调用(如:引用游标)
set autoprint on --打开Sqlplus输出
variable tempCur RefCursor; --定义一个宿主类型的引用游标变量
exec StudentPackage。
ReturnStudent(:tempCur); --执行带有引用游标的过程 注意使用宿主类型的变量前面要加“:”符号
4。 有关子程序和程序包的信息
A。数据字典
User_objects 用于检查对象是否存在
User_source
用于获取对象的代码
B。
包的修改和删除
Alter Package [Body] 包名
Alter Package Body StudentPackage;
Drop Package [Body] 包名
Drop Package Body StudentPackage;。
全部