包(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 declarationstype <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部分的语句块)。

在包中定义游标可分为两种方式:

(1)在包规范中,定义整个游标,包含查询语句。

(2)在包规范中仅定义游标头,不包含查询语句。在包体中指定查询语句。

    在包规范中仅定义游标头的话,必须使用return子句指定游标将要提取的数据的元素类型,一般是select语句确定的记录类型。

转载于:https://www.cnblogs.com/ly01/p/8603843.html

PL/SQL包(Package)相关推荐

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

    包 1:概念 包是一组过程.函数.变量.常量和游标等元素的组合.是对这些PL/SQL 程序设计元素的封装.其中变量相当于类中的成员变量,过程和函数相当于类方法.把相关的模块归类成包,可使开发人员利用面 ...

  2. oracle pl/sql 包

    包用于在逻辑上组合过程和函数,它由包规范和包体两部分组成. 1).我们可以使用create package命令来创建包,如: i.创建一个包sp_package ii.声明该包有一个过程update_ ...

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

    [强烈推荐]ORACLE PL/SQL编程详解之七: 程序包的创建与应用(聪明在于学习,天才在于积累!) --通过知识共享树立个人品牌.   继上七篇:            [推荐]ORACLE P ...

  4. PL/SQL用户指南与参考(第一章)

    第一章 PL/SQL一览 一.理解PL/SQL的主要特性 1.块结构 了解PL/SQL最好的方法就是从简单的实例入手.下面的程序是用于处理一个网球拍订单的.首先声明一个NUMBER类型的变量来存放现有 ...

  5. 关于PL/SQL我写了一份从0到1的入门教程

    PL/SQL 什么是PL/SQL ​ 许多时候我们会利用结构化查询语言(SQL)来访问和操作关系型数据库.这种语言的特点就是非过程化.也就是说使用的时候不用指明执行的具体方法和途径,即不用关注任何的实 ...

  6. 金仓数据库KingbaseES数据库开发指南(4. 面向应用程序的PL/SQL开发)

    目录 4.1. PL/SQL子程序和包的编写 ¶ 4.1.1. PL/SQL 子程序概述 ¶ 4.1.2. PL/SQL 包概述 ¶ 4.1.3. PL/SQL 单元概述 ¶ 4.1.4. 创建 PL ...

  7. Oracle 12c中增强的PL/SQL功能

    英文链接:http://www.oracle.com/technetwork/issue-archive/2013/13-sep/o53plsql-1999801.html Oracle 12c增强了 ...

  8. Oracle PL/SQL编程详解

    Oracle PL/SQL编程详解 - 古立 - 博客园 <我的网络摘抄本> 网摘/转载/备忘/随记 博客园 首页 新随笔 联系 管理 订阅 随笔- 84  文章- 0  评论- 0  & ...

  9. PL/SQL -- INSTEAD OF 触发器

    为什么80%的码农都做不了架构师?>>>    --============================== -- PL/SQL --> INSTEAD OF 触发器 -- ...

最新文章

  1. YOLOv4:目标检测(windows和Linux下Darknet 版本)实施
  2. 强化学习(二)马尔科夫决策过程(MDP)
  3. 主板怎么开启csm_华擎Z490主板移植AMD SAM加速技术:游戏性能提升最多11.5%
  4. PHPExel导出报表--导出类
  5. powershell some check
  6. LeetCode 885. 螺旋矩阵 III
  7. Exp-00009错误解決
  8. generator.xml mysql_Mybatis 使用generator.xml生成实体及mapper
  9. PyCharm安装步骤
  10. 桌面弹球游戏终结,含有全部代码
  11. intouch的报警怎么发到微信上
  12. 小爱同学控制ESP8266点灯
  13. 支付宝VS微信支付竞品分析
  14. linux命令解压文件到指定目录并覆盖,Linux文件压缩和解压缩命令使用详解
  15. IDEA修改快捷键方法(在原快捷键不变的基础上增加自己习惯的快捷键)
  16. iPhone X 适配
  17. SSD《一》-- 基础知识
  18. caret包处理流程
  19. 学习java可以做什么?学习java有什么用?
  20. MDI窗体的优化---下

热门文章

  1. JavaScript学习笔记(四)——jQuery插件开发与发布
  2. Spring笔记③--spring的命名空间
  3. PHP多线程的实现(PHP多线程类)
  4. (String) 和 String.valueOf() 两种字符串转换的区别
  5. 【Java】Mybatis mapper动态代理方式
  6. dom4j的读写xml文件,读写xml字符串
  7. grep 命令的 12 个实例
  8. linux 程序包管理5 编译安装
  9. shell中sed -i特殊字符
  10. 25--最后一个单词的长度