PL/SQL包(Package)

包(Package)的主要作用是用于逻辑组合相关的PL/SQL类型,一旦创建了包,包就会被存储在Oracle数据库中。

包由以下两部分组成:

(1)包规范(Specification):主要是包的一些定义信息,不包含具体的实现,包含类型(type),记录(record),变量(variable),常量(constant),异常(exception)定义,游标(cursor)和子程序(function or procedure)的声明。

(2)包体(Body):包体是对包规范中声明的子程序的实现部分。

包规范定义了包需要被公开的声明部分,在创建之后将保存到数据库用户对应的schema中。

语法 create or replace package package_name is

  -- Author  : HP
  -- Created : 3/19/2018 3:49:59 PM
  -- Purpose : 

  -- Public type declarations
  type <TypeName> is <Datatype>;

  -- Public constant declarations
  <ConstantName> constant <Datatype> := <Value>;

  -- Public variable declarations
  <VariableName> <Datatype>;

 CURSOR cursor_name RETURN return_type; --定义一个游标声明 exception_name  EXCEPTION;   --定义一个异常
-- Public function and procedure declarations function <FunctionName>(<Parameter> <Datatype>) return <Datatype>;

end test_package;

包体:包体中实现包规范的代码是公开的。

   不在包规范中声明的代码是私有的,只能在本包体内被引用。

 1 create or replace package body test_package is
 2
 3   -- Private type declarations
 4   type <TypeName> is <Datatype>;
 5
 6   -- Private constant declarations
 7   <ConstantName> constant <Datatype> := <Value>;
 8
 9   -- Private variable declarations
10   <VariableName> <Datatype>;
11
12   -- Function and procedure implementations
13   function <FunctionName>(<Parameter> <Datatype>) return <Datatype> is
14     <LocalVariable> <Datatype>;
15   begin
16     <Statement>;
17     return(<Result>);
18   end;
19
20 begin
21   -- Initialization 初始化代码块
22   <Statement>;
23 end test_package;

当包第一次被调用时,将进行初始化,将包从硬盘调到内存中,放到系统全局区的共享缓冲池中,包的运行状态则被放入用户全局区的会话存储区中。

包从第一次调用被初始化,一直到会话结束才释放其运行状态,因此包中的变量具有会话级的作用域。

当会话第一次使用某个包时,会对包进行初始化,此时会初始化所有包级别的数据,对声明中的常量或变量指定赋默认值,初始化单元中的代码块(即begin-end部分的语句块)。

原文地址:https://www.cnblogs.com/ly01/p/8603843.html

时间: 2024-11-13 06:33:00

PL/SQL包(Package)的相关文章

(十三)PL/SQL包

PL/SQL包是组逻辑相关的PL/SQL类型,变量和子程序模式对象.程序包将有两个强制性的部分: 1.包装规范定义 2.包体或定义 一.包装规范定义规范是接口到包.它只是声明的类型,变量,常量,异常,游标和子程序可从封装外部引用.换句话说,它包含关于包的内容的所有信息,但不包括用于子程序的代码.置于规范的所有对象被称为公共对象.任何子程序在封装主体中没有包定义但编码被称为私有对象. 下面的代码片段显示了具有单一的程序包规范定义.一个包中可以定义的全局变量和多个程序或函数. CREATE PACK

oracle PL/SQL 包的介绍(四)

PL/SQL 的包1.逻辑相关的组件的组合 (变量,数据结构,异常,存储过程,函数)2.组成 : 定义 和 包体 -- 组成包头 : PUBLIC 包体 : PRIVATE -- 包头的语法   1 CREATE OR REPLACE PACKAGE package_name IS|AS 2 PUBLIC TYPE AND VARIABLE declarations 3 subprogram specifications 4 END [package_name]; --实例 1 CREATE O

PL/SQL 包的概念及创建使用

包1:概念包是一组过程.函数.变量.常量和游标等元素的组合.是对这些PL/SQL 程序设计元素的封装.其中变量相当于类中的成员变量,过程和函数相当于类方法.把相关的模块归类成包,可使开发人员利用面向对象的方法进行存储过程的开发.2:包的组成部分: (1)包定义(PACKAGE):包定义部分声明包内数据类型.变量.常量.游标.子程序和异常错误处理等元素,这些元素为包的公有元素. (2)包主体(PACKAGE BODY):包主体则是包定义部分的具体实现,它定义了包定义部分所声明的游标和子程序,在包主

oracle pl/sql 包

包用于在逻辑上组合过程和函数,它由包规范和包体两部分组成.1).我们可以使用create package命令来创建包,如:i.创建一个包sp_packageii.声明该包有一个过程update_saliii.声明该包有一个函数annual_income --声明该包有一个存储过程和一个函数create package sp_package is procedure update_sal(name varchar2, newsal number); function annual_income(n

[强烈推荐]ORACLE PL/SQL编程详解之七:程序包的创建与应用(聪明在于学习,天才在于积累!)

原文:[强烈推荐]ORACLE PL/SQL编程详解之七:程序包的创建与应用(聪明在于学习,天才在于积累!) [强烈推荐]ORACLE PL/SQL编程详解之七: 程序包的创建与应用(聪明在于学习,天才在于积累!) ——通过知识共享树立个人品牌.   继上七篇:            [推荐]ORACLE PL/SQL编程详解之一:PL/SQL 程序设计简介(千里之行,始于足下)            [顶]ORACLE PL/SQL编程详解之二:PL/SQL块结构和组成元素(为山九仞,岂一日之

Oracle数据库之开发PL/SQL子程序和包

Oracle数据库之开发PL/SQL子程序和包 PL/SQL块分为匿名块与命名块,命名块又包含子程序.包和触发器. 过程和函数统称为PL/SQL子程序,我们可以将商业逻辑.企业规则写成过程或函数保存到数据库中,以便共享. 过程和函数均存储在数据库中,并通过参数与其调用者交换信息.过程和函数的唯一区别是函数总向调用者返回数据,而过程不返回数据. 1. 存储过程概念 存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL语句集,存储在数据库中.经过第一次编译后

PL/SQL之--包

一.包 包是一组相关过程.函数.常量.变量.游标.异常等PL/SQL程序设计元素的组合.它类似于C++和Java中的类,其中变量相当于类中的成员变量,过程和函数相当于类中的方法.通过使用包,可以使开发人员利用面向对象的方法进行存储过程的开发,从而提高系统的性能. 包的结构如下: 一个包由包头和包主体组成: 包头(package):包头部分声明包内数据类型.变量.常量.游标.子程序(只有声明)和异常错误处理等元素,这些元素为包的共有元素. 包主体(package body):包主体则是包定义部分的

PL/SQL数据库开发那点事

PL/SQL数据库开发那点事-->编程,存储程序 在SQL*plus 中编写PL/SQL程序,并在SQL*plus 中执行它, PL/SQL块的代码就存放在SQL*plus的缓冲区中.如果在SQL*plus 中执行了其他的SQL语句或PL/SQL块,缓冲区中就会存放新的代码,原来的PL/SQL块就会被从缓冲区中清除出去.这种没有名称只是临时存放在缓冲区中的PL/SQL块叫做匿名块.匿名块就是没有名字的PL/SQL块,它仅存放在缓冲区中,只能在当前SQL*plus环境中执行.如果希望PL/SQL块

pl/sql程序语言

pl/sql程序基础知识: pl/sql(procedural language/sql)oracle在标准sql上面的扩展,不仅简单的sql语句,还具有一般语言的特性:变量,常量,流程控制和循环,错误处理机制.是一个功能完善强大的过程化语言. 它的编程基本单位是块,复杂的功能都是多个块组成 我们来看看它的实列代码: 块结构: declear --定义部分,可选 /*定义部分--变量,常量,游标,异常,复杂数据类型*/ begin --执行部分 /*pl/sql语句和SQL语句;*/ excep