] PACKAGE BODY package_name
IS | AS
private type and item declarations
subprogram bodies
END package_name;
2.2 调用包的组件
对于包的私有组件,只能在包内调用,并且可以直接调用
而对于包的公用组件,既可以在包内调用,又可以在其他应用中调用
在同一包内调用包的组件
在调用同一包内的其他组件时,可以直接调用,不需要添加包名作为前缀
调用包的公用变量
当在其他应用中调用包的公用变量时,必须在公用变量名前添加包名作为前缀
调用包的公用过程
当在其他应用中调用包的公用过程时,必须在公用过程名前添加包名作为前缀
调用包的公用函数
当在其他应用中调用包的公用函数时,需要在函数名前添加包名作为前缀
以其他用户身份调用包的公用组件
当以其他用户身份调用包的公用组件时,必须为用户赋予能够执行包的权限,并且必须以“用户名.包名.组件名”的语法格式来调用
2.3 管理包
查看包源代码
通过查询数据字典USER_SOURCE,可以显示当前用户的包及其源代码
删除包
如果只删除包体,则可以使用DROP PACKAGE BODY命令
如果同时删除包规范和包体,则可以使用DROP PACKAGE命令
总结
子程序是指被命名的PL/SQL块,这种块可以带有参数,可以在不同应用中多次调用。PL/SQL有两种类型的子程序:过程和函数
过程一般用于执行一个指定的动作
函数一般用于计算和返回一个值
子程序使用IN模式的参数传入数据、OUT模式的参数返回数据
IN OUT参数也称为输入输出参数,它在调用过程之前需通过变量给参数传递数据,在调用结束之后,Oracle会通过该变量将过程结果传递给应用
为形参传递变量和数据可以采用位置传递、名称传递和组合传递3种方法
可以在SQL语句内部调用函数来完成复杂计算问题,但不能调用过程
包(Package)用于逻辑组合相关的PL/SQL类型、PL/SQL项和PL/SQL子程序
包由包规范和包体两部分组成。当创建包时,需要首先创建包规范,然后再创建包体
摘自 幸福的猪的专栏