CREATE PACKAGE BODY 语句 (PL/SQL)

CREATE PACKAGE BODY 语句将创建一个程序包主体,该主体包含程序包规范中声明的所有过程和函数的实现以及私有类型、变量和游标的任何声明。

语法

阅读语法图跳过直观语法图CREATEOR REPLACE PACKAGE BODYpackage-nameISAS私有声明过程规范函数规范BEGIN初始化语句END
过程规范
阅读语法图跳过直观语法图PROCEDUREprocedure-name(,parameter)ISASprocedure-declarationBEGINstatementEXCEPTIONWHENconditionORTHENhandler-statementEND
函数规范
阅读语法图跳过直观语法图FUNCTIONfunction-name(,parameter)RETURNreturn-typeISASfunction-declarationBEGINstatementEXCEPTIONWHENconditionORTHENhandler-statementEND

描述

package-name
指定要创建其主体的程序包的名称。必须存在同名的程序包规范。
private-declaration
指定可以由程序包中的任何过程或函数访问的专用对象的名称。可以存在零个或零个以上私有变量。private-declaration 可以是下列任何一项:
  • 变量声明
  • 记录声明
  • 集合声明
  • REF CURSOR 和游标变量声明
  • REF CURSOR 类型的记录、集合或变量的 TYPE 定义
  • 基于基本类型的 SUBTYPE 定义
procedure-name
指定程序包规范及其特征符中声明的公用过程的名称。特征符可以指定下列任何一项:形参名称、数据类型、参数方式、形参的顺序或形参的数目。当过程名称和程序包规范与公用过程的声明的特征符精确匹配时,procedure-name 将定义此公用过程的主体。

如果这些条件都不成立,那么 procedure-name 将定义新的私有过程。

parameter
指定过程的形参。
procedure-declaration
指定只能从过程 procedure-name 中访问的声明。这是 PL/SQL 语句。
statement
指定 PL/SQL 程序语句。
function-name
指定程序包规范及其特征符中声明的公用函数的名称。特征符可以指定下列任何一项:形参名称、数据类型、参数方式、形参的顺序或形参的数目。当函数名和程序包规范与公用函数的声明的特征符精确匹配时,function-name 将定义此公用函数的主体。

如果这些条件都不成立,那么 function-name 将定义新的私有函数。

parameter
指定函数的形参。
return-type
指定函数所返回的值的数据类型。
function-declaration
指定只能从函数 function-name 中访问的声明。这是 PL/SQL 语句。
statement
指定 PL/SQL 程序语句。
initialization-statement
指定程序包主体的初始化节中的语句。如果指定了初始化节,那么它必须至少包含一条语句。对于每个用户会话,将在第一次引用该程序包时执行一次初始化节中的语句。

注意

可以采用已模糊化的格式来提交 CREATE PACKAGE BODY 语句。在已模糊化的语句中,只有程序包名可读。按照下面这样一种方式对该语句的其余内容进行编码:这些内容不可读,但是可由数据库服务器解码。可以通过调用 DBMS_DDL.WRAP 函数来生成模糊化的语句。