当前位置: 首页 > 数据库 > Oracle教程 > 正文

Oracle中包(PACKAGE)的使用方法

时间:2014-07-21

1、定义

包:(1)被组合在一起的相关对象的集合,当包中任何函数或存储过程被调用,包就被加载入内存。

(2)包中的任何函数或存储过程的子程序访问速度将大大加快。

(3)包由两个部分组成:包头和包体,在包头中描述变量、常量、游标、和子程序。

(4)包体由完整的子程序,游标定义组成。

2、创建包

包头:

CREATE OR REPLACE PACKAGE test_pkg IS

PROCEDURE update_sal(e_name VARCHAR2,newsal NUMBER);

FUNCTION ann_income(e_name VARCHAR2) RETURN NUMBER;

END;

--定义了一个函数和一个过程

包体:

CREATE OR REPLACE PACKAGE BODY test_pkg IS

PROCEDURE update_sal(e_name VARCHAR2,newsal NUMBER)

IS

BEGIN

UPDATE emp1 SET sal=newsal WHERE ename=e_name;

END;

FUNCTION ann_income(e_name VARCHAR2)

RETURN NUMBER IS

annsal NUMBER;

BEGIN

SELECT sal*12+NVL(comm,0) INTO annsal FROM emp1

WHERE ename=e_name;

RETURN annsal;

END;

END;

--实现上面的函数和过程

3、调用包

对包内共有元素的调用格式为:包名,元素名称。

对包内过程调用

SQL> exec test_pkg.update_sal('SCOTT',1200);

对包内函数调用

DECLARE

v_annsal NUMBER(7,2);

BEGIN

v_annsal:=test_pkg.ann_income('SCOTT');

dbms_output.put_line('年薪为:'||v_annsal);

END;

4、删除包

我们可以 DROP PACKAGE 命令对不需要的包进行删除,语法如下:

DROP PACKAGE [BODY[user.]package_name;

作者:51cto Oracle小混子

查看本栏目更多精彩内容:http://www.bianceng.cn/database/Oracle/