程序包 百科内容来自于: 百度百科

概述

可以利用包(package)将过程和函数安排在逻辑分组中。包含有两个分离的部件;包说明(规范、包头)和包体(主体)。包说明和包体都存储在数据字典中。包与过程和函数的一个明显的区别时,包仅能存储在非本地的数据库中。除了允许相关的对象结合为组之外,包与依赖性较强的存储子程序相比其所收的限制较少。除此之外,包的效率比较高。
从本质上讲,包是一个命名的声明部分。任何可以出现在块声明中的语句都可以在包中使用,这些语句包括过程、函数、游标、类型和变量。把上述内容放入包中的好处是,用户可以从其他PL/SQL块中对其进行引用,包为PL/SQL语言提供了全程变量。

创建程序包

包的创建分为包头的创建和包体的创建两部分。
(1)包头。创建包头的语法格式为:
CREATE OR REPLACE PACKAGE [schema.]package_name /*包头名称*/
IS | AS pl/sql_package_spec /*定义过程、函数等*/
其中:
schema:指定将要创建的包所属用户方案。
Package_name:将要创建的包的名称。
Pl/sql_package_spec:变量、常量及数据类型定义;游标定义;函数、过程定义和参数列表返回类型。
(2)创建包体的语法格式为:
CREATE OR REPLACE PACKAGE BODY[schema.]package_name
IS | AS pl/sql_package_body
其中:
schema:指定将要创建的包所属用户方案。
Pl/sql_package_body:游标、函数、过程的具体定义。
包体是一个独立于包头的数据字典对象。包体只能在包头完成编译 后才能进行编译。包体中带有实现包头中描述的前向子程序的代码 段。除此之外,包体还可以包括具有包体全局属性的附加声明部 分,但这些附加说明对于说明部分是不可见的。

包的应用

调用包

在创建了包说明和相应的包体之后,就可以调用该包的各个组件了。对包内公有组件的调用格式要用到包名并加“.”作为限定词,即包名.组件名称。

包的重载

在包的内部,过程和函数可以重载。可以有名称相同的对象。

删除包

当不在需要某个程序包时,可以将其删除。如果只删除包体,可以使用命令:
DROP PACKAGE BODY package_name;
如果要同时删除包头,可以使用命令:
DROP PACKAGE package_name;
$firstVoiceSent
- 来自原声例句
小调查
请问您想要如何调整此模块?

感谢您的反馈,我们会尽快进行适当修改!
进来说说原因吧 确定
小调查
请问您想要如何调整此模块?

感谢您的反馈,我们会尽快进行适当修改!
进来说说原因吧 确定