Oracle基础 程序包

一、程序包

  程序包是一种数据库对象,它是对相关PLSQL类型、子程序、游标、异常、变量和常量的封装。程序包包含两部分内容:

  1、程序包规范:可以声明类型、变量、常量、异常、游标和子程序。

  2、程序包主题:可以实现在程序包规范中定义的游标、子程序。

二、程序包规范

  程序包规范包含一些应用程序课件的公共对象和类型的声明它是应用程序的借口。规范包含应用程序所需的资源,如果程序包规范只声明类型、常量、变量和异常,则不需要有程序包主体。只有子程序和游标才具有程序包主体。

  语法:

  create [or replace] package package_name

  is|as

    [public type and item declations]

    [subprogram specifications]

  end [package_name]

  说明:

  package_name:包的名称。

  public type and item declations:声明公共类型、常量、变量、异常和游标等。

  subprogram specifications:声明PL/SQL子程序,也就是存储过程和函数。

  在程序包规范中声明的项也可以再程序包之外使用。这样的项成为“公用对象”。

  

  例:

--程序包规范的声明
CREATE OR REPLACE PACKAGE PACKAGE_ME IS
  PROCEDURE PRO_EMP_SELECT(ENO NUMBER); --声明一个存储过程:根据员工编号查询员工信息
  FUNCTION FUN_EMP_SELECT(ENO NUMBER) RETURN NUMBER; --声明一个函数,根据员工编号查询员工工资。
END PACKAGE_ME;

三、程序包主体:

  程序包主题包含了在程序包规范中声明的每个游标和子程序的具体实现。私有声明也可以包含在程序包主体中。程序包主题部分初始化是可选的,它可用于初始化程序包包中的变量。程序包的初始化部分既不能调用程序包,也不能将参数传递给程序包,而且,初始化部分仅运行一次。

  create [or replace] package body package_name

  is|as    

    [public type and item declarations]

    [subprogram bodies]

  [begin

    initialization_statements]

  end [package_name]

  说明:

  public type and item declarations:声明变量、常量、游标、异常或类型。

  subprogram bodies:定义公共和私有PL/SQL子程序。

  initialization_statements:程序包中规范代码的实现。

  

  例:对上面所声明的规范部分的存储过程和函数提供实现。  

--创建程序包主体,提供程序包内容的实现,和存储过程、函数的声明一致
CREATE OR REPLACE PACKAGE BODY PACKAGE_ME IS
  PROCEDURE PRO_EMP_SELECT(ENO NUMBER) AS
    V_NAME EMP.ENAME%TYPE;
    V_SAL  EMP.SAL%TYPE;
  BEGIN
    SELECT ENAME, SAL INTO V_NAME, V_SAL FROM EMP WHERE EMPNO = ENO;
    DBMS_OUTPUT.PUT_LINE(‘name:‘ || V_NAME || ‘   sal:‘ || V_SAL);
  END PRO_EMP_SELECT;

  FUNCTION FUN_EMP_SELECT(ENO NUMBER) RETURN NUMBER AS
    V_SAL EMP.SAL%TYPE;
  BEGIN
    SELECT SAL INTO V_SAL FROM EMP WHERE EMPNO = ENO;
    RETURN V_SAL;
  END FUN_EMP_SELECT;
END PACKAGE_ME;

四、调用程序包  

DECLARE
  v_sal emp.sal%TYPE;
BEGIN
    package_me.PRO_EMP_SELECT(7788);                --调用方式和调用存储过程方式一样,不过需要在存储过程前添加程序包名
    v_sal := package_me.FUN_EMP_SELECT(7788);       --调用方式和调用函数方式一样,不过需要在函数前添加程序包名
    dbms_output.put_line(v_sal);
END;
时间: 2024-12-19 19:07:06

Oracle基础 程序包的相关文章

Oracle基础<4>--程序包

一:程序包定义(包括1.程序包规范 2.程序包主体) 程序包是一种数据库对象,它是对相关pl/sql 类型.子程序.游标.异常.变量和常量的封装. 1.程序包规范:可以声明类型.变量.常量.异常.游标和子程序. 2.程序包主体:可以实现在程序包规范中定义的游标.子程序. 二:程序包规范 程序包规范包含一些应用程序课件的公共对象和类型的声明它是应用程序的借口.规范包含应用程序所需的资源,如果程序包规范只声明类型.常量.变量和异常,则不需要有程序包主体.只有子程序和游标才具有程序包主体. 语法: c

linux基础之程序包管理(二)

Linux程序包管理(2) CentOS: yum, dnf URL: ftp://172.16.0.1/pub/ YUM: yellow dog, Yellowdog Update Modifier yum repository: yum repo 存储了众多rpm包,以及包的相关的元数据文件(放置于特定目录下:repodata): 文件服务器: ftp:// http:// nfs:// file:/// yum客户端: 配置文件: /etc/yum.conf:为所有仓库提供公共配置 /et

ORACLE的程序包1-程序包的基础

程序包简析 oracle中的程序包简析    一 程序包的基本概念     程序包可将若干函数或者存储过程组织起来,作为一个对象进行存储.程序包通常由两部分构成,规范(specification)和主体(body). 程序包也可以包含常量和变量,包中的所有函数和存储过程都可以使用这些变量或者常量. 程序包是对相关过程.函数.变量.游标和异常等对象的封装 程序包由规范和主体两部分组成 二 规范     1 创建规范(SQL窗口)     create or replace package pkg_

Oracle实践--PL/SQL基础之触发器和程序包

PL/SQL基础之触发器和程序包  程序包 /* 程序包:对相关存储过程,函数,变量,游标和异常等对象的封装 有声明和主体组成 优点:1.模块化:2.更轻松的应用程序设计;3.信息隐藏;4.性能更佳 */ --程序包的声明:关键字:package is end create or replace package my_pack as procedure packageTest(v_num number); end my_pack;--也可以是 end; --程序包的主体 create or re

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

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

ORACLE的程序包不该忽视的东西

1.程序包就相当于JAVA中的类 2.程序包效率高的原因是:当程序首次调用包内函数或过程时,ORACLE将整个包调入内存,当再次访问包内元素时,ORACLE直接从内存中读取,而不需要进行磁盘I/O操作,从而使程序执行效率得到提高. 3.包有两部分组成 (1).包说明(规范)(PACKAGE SPECIFICATION):包说明部分声明包内数据类型.变量.常量.游标.子程序和异常错误处理等元素,这些元素为包的公有元素. (2).包体(PACKAGE BODY):包主体则是包定义部分的具体实现,它定

Oracle数据库程序包全局变量的应用

1 前言  在程序实现过程中,经常用遇到一些全局变量或常数.在程序开发过程中,往往会将该变量或常数存储于临时表或前台程序的全局变量中,由此带来运行效率降低<频繁读取临时表>或安全隐患<存于前台程序变量,可跟踪内存变量获得>.  本文主要论述将全局变量或常数存取程序包的优点和实现方法.   2 优点  2.1 执行效率比存储于临时表高,不需要频率存取临时表  2.2 将全局变量藏于最后防线<数据库>,安全性较高  2.3 在视图中可以调用程序包的变量,实现动态视图   3

oracle程序包的原理和使用

程序包 程序包的定义:      程序包是对相关过程.函数.变量.游标和异常等对象的封装 程序包由规范和主体两部分组成 优点:      模块化.更轻松的应用程序设计.信息隐藏.新增功能.性能更佳. 创建包头包体的基本操作如下: create or replace package pack1 --创建包头/规范 is aa number := 1 ; --在包头声明的为公有变量 procedure update_student (update_row in student %rowtype );

Oracle学习笔记十二 子程序(存储过程、自定函数)和程序包

子程序 子程序:命名的 PL/SQL 块,编译并存储在数据库中. 子程序的各个部分: 1.声明部分 2.可执行部分 3.异常处理部分(可选) 子程序的分类: 1.过程 - 执行某些操作 2.函数 - 执行操作并返回值 子程序的优点: 模块化 将程序分解为逻辑模块 可重用性 可以被任意数目的程序调用 可维护性 简化维护操作 安全性 通过设置权限,使数据更安全 存储过程 过程是用于完成特定任务的子程序. 例如: 一个购票过程可以分为很多个子过程,分别完成. 创建存储过程 创建过程的语法: CREAT