一:程序包定义(包括1.程序包规范 2.程序包主体)

  程序包是一种数据库对象,它是对相关pl/sql 类型、子程序、游标、异常、变量和常量的封装。

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

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

二:程序包规范

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

  语法:

  creat [or replace] package package_name --包名称

  [is | as]

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

  [subprogram specifications]   --声明pl/sql子程序,也就是存储过程和和函数

  end [package_name];


--程序包规范的声明
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]                    --定义公共和私有PL/SQL子程序。

  [begin

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

  end [package_name];


--创建程序包主体,提供程序包内容的实现,和存储过程、函数的声明一致
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;

												

Oracle基础<4>--程序包的更多相关文章

  1. Oracle存储过程和程序包

    一.为什么要用存储过程? 如果在应用程序中经常需要执行特定的操作,可以基于这些操作简历一个特定的过程.通过使用过程可以简化客户端程序的开发和维护,而且还能提高客户端程序的运行性能. 二.过程的优点? ...

  2. linux基础之程序包管理(rpm,yum)

    一.rpm 安装:rpm { -i | --install } [ install-options ] PACKAGE_FILE... -v: 显示安装时的详细信息 -vv: 显示许多难以阅读的调试信 ...

  3. Oracle基础 程序包

    一.程序包 程序包是一种数据库对象,它是对相关PLSQL类型.子程序.游标.异常.变量和常量的封装.程序包包含两部分内容: 1.程序包规范:可以声明类型.变量.常量.异常.游标和子程序. 2.程序包主 ...

  4. Oracle编程入门经典 第11章 过程、函数和程序包

    目录 11.1          优势和利益... 1 11.2          过程... 1 11.2.1       语法... 2 11.2.2       建立或者替换... 2 11.2 ...

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

    1 前言  在程序实现过程中,经常用遇到一些全局变量或常数.在程序开发过程中,往往会将该变量或常数存储于临时表或前台程序的全局变量中,由此带来运行效率降低<频繁读取临时表>或安全隐患< ...

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

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

  7. Oracle学习笔记十四 内置程序包

    扩展数据库的功能 为 PL/SQL 提供对 SQL 功能的访问 用户 SYS 拥有所有程序包 是公有同义词 可以由任何用户访问 一些内置程序包 程序包名称 说明 STANDARD和DBMS_STAND ...

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

    子程序 子程序:命名的 PL/SQL 块,编译并存储在数据库中.   子程序的各个部分: 1.声明部分 2.可执行部分 3.异常处理部分(可选) 子程序的分类: 1.过程 - 执行某些操作 2.函数 ...

  9. Oracle程序包

    程序包由两部分构成:规范(specification)和主体(body). 创建表 create table PEOPLE ( ID NUMBER primary key not null, NAME ...

随机推荐

  1. HDU 5444 Elven Postman (二叉树,暴力搜索)

    题意:给出一颗二叉树的先序遍历,默认的中序遍历是1..2.……n.给出q个询问,询问从根节点出发到某个点的路径. 析:本来以为是要建树的,一想,原来不用,其实它给的数是按顺序给的,只要搜结点就行,从根 ...

  2. getConnection 区别

    1. 这是一个接口 package javax.sql; DataSource.class /** * <p>Attempts to establish a connection with ...

  3. js get 传参 汉字 乱码问题

    js encodeURI(encodeURI(searchWord)) java URLDecoder.decode(searchWord,"utf-8")

  4. GC:垃圾回收器简介

    Java堆内存被划分为新生代和年老代两部分,新生代主要使用复制和标记-清除垃圾回收算法,年老代主要使用标记-整理垃圾回收算法,因此java虚拟中针对新生代和年老代分别提供了多种不同的垃圾收集器,JDK ...

  5. 《dive into python3》 笔记摘录

    1.list can hold  arbitrary  objects and can expand dynamically as new items are added. A list is an  ...

  6. sql 分组后 组内排名

    语法:ROW_NUMBER() OVER(PARTITION BY COLUMN ORDER BY COLUMN) 简单的说row_number()从1开始,为每一条分组记录返回一个数字,这里的ROW ...

  7. Linux 禁用笔记本触摸板

    1. 查看有什么设备 xinput list 输出: ⎡ Virtual core pointer id=2 [master pointer (3)] ⎜ ↳ Virtual core XTEST p ...

  8. 【绝密外泄】风哥Oracle数据库DBA高级工程师培训视频教程与内部资料v0.1

    [绝密外泄]风哥Oracle数据库DBA高级工程师培训视频教程与内部资料v0.1 由于是[绝密外泄]资料,防止被查,需要的小伙伴赶紧下载附件中的课件文档.由于视频太大了,已放在百度网盘了,已经在附中说 ...

  9. Java中移位操作运算符的理解

    java中的移位运算符有三种: 1. <<: 左移 2. >>: 右移 3. >>>: 无符号右移 使用方法:左移就是将左边的操作数在内存中的二进制数据左移指 ...

  10. state与status的区别

    status 指人时暗指相对的地位,指物时相当于 situation.situation 较狭义地指由环境综合决定的特定时间上的状态或情形. state 人或物存在或所处的状态,和 condition ...