oracle pl/sql 包

Posted 代码小分队

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle pl/sql 包相关的知识,希望对你有一定的参考价值。

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

--声明该包有一个存储过程和一个函数
create package sp_package is
procedure update_sal(name varchar2, newsal number);
function annual_income(name varchar2) return number;
end;

  

2)、建立包体可以使用create package body命令
给包sp_package实现包体

复制代码
CREATE OR REPLACE PACKAGE BODY SP_PACKAGE IS
--存储过程
PROCEDURE UPDATE_SAL(NAME VARCHAR2, NEWSAL NUMBER) IS
BEGIN
UPDATE EMP SET SAL = NEWSAL WHERE ENAME = NAME;
COMMIT;
END;

--函数
FUNCTION ANNUAL_INCOME(NAME VARCHAR2) RETURN NUMBER IS
ANNUAL_SALARY NUMBER;
BEGIN
SELECT SAL * 12 + NVL(COMM, 0) INTO ANNUAL_SALARY FROM EMP WHERE ENAME = NAME;
RETURN ANNUAL_SALARY;
END;
END;
/
复制代码

    

3)、如何调用包的过程或是函数
当调用包的过程或是函数时,在过程和函数前需要带有包名,如果要访问其它方案的包,还需要在包名前加方案名。如:

--调用存储过程
SQL> exec sp_package.update_sal(\'SCOTT\', 8888);
--调用函数
var income NUMBER;
CALL sp_package.ANNUAL_INCOME(\'SCOTT\') INTO:income;
print income;

参见:http://www.cnblogs.com/linjiqin/archive/2012/02/24/2367167.html

以上是关于oracle pl/sql 包的主要内容,如果未能解决你的问题,请参考以下文章

为啥 oracle 中的应用程序上下文使用 PL/SQL 过程

SQL记录-PLSQL包

Oracle 构建顺序和 PL/SQL 包依赖关系

用于处理来自 CLOB 的 CSV 的 Oracle PL/SQL 包/过程

PL/SQL包(package)操作实例讲解

oracle unwrap解密工具