Oracle中的package 怎么用

Posted

tags:

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

先create package,在里面声明procedure

然后再create package body,在package body里面编写procedure的代码即可(相当于create procedure)。

包里没有create procedure

示例如下:

CREATE OR REPLACE PACKAGE pkg_test IS
PROCEDURE pro_test(V_OLD IN VARCHAR2,V_NEW IN VARCHAR2);
...
END test;
/

CREATE OR REPLACE PACKAGE BODY pkg_test IS
...

PROCEDURE pro_test(V_OLD IN VARCHAR2,V_NEW IN VARCHAR2) IS
BEGIN
...
END;

...
END pkg_test;
参考技术A 如果用于Oracle存储过程,由于Oracle存储过程没有返回值,它的所有返回值都是通过out参数来替代的,列表同样也不例外,但由于是集合,所以不能用一般的参数,必须要用pagkage了.所以要分两部分。
1. 建一个程序包。如下:
CREATE OR REPLACE PACKAGE TESTPACKAGE AS
TYPE TEST_CURSOR IS REF CURSOR;
end TESTPACKAGE;
2. 建立存储过程,存储过程为:
CREATE OR REPLACE PROCEDURE TESTC(P_CURSOR out TESTPACKAGE.TEST_CURSOR) IS
BEGIN
OPEN P_CURSOR FOR
SELECT * FROM BOM.TESTTB;
END TESTC;
可以看到,它是把游标(可以理解为一个指针),作为一个out 参数来返回值的。
参考技术B 在调用时应该这么写,包名.方法名(入参,出参) 参考技术C 我刚学完Package:
仔细看
程序包规范

CREATE [OR REPLACE]
PACKAGE
package_name IS|AS
[Public item declarations]
[Subprogram specification]
END [package_name];

CREATE OR REPLACE PACKAGE BODY pack_me AS
PROCEDURE order_proc (orno VARCHAR2) IS
stat CHAR(1);
BEGIN
SELECT ostatus INTO stat FROM order_master
WHERE orderno = orno;
……
END order_proc;
FUNCTION order_fun(ornos VARCHAR2)
RETURN VARCHAR2
IS
icode VARCHAR2(5);
ocode VARCHAR2(5);
BEGIN
……
END order_fun;
END pack_me;
参考技术D 在sql中调用:包名.方法名 or 包名.过程名

以上是关于Oracle中的package 怎么用的主要内容,如果未能解决你的问题,请参考以下文章

LATEX中如何添加package?如何添加MATLAB代码?

linux用yum安装vim失败提示no package vimrc available是怎么回事?

oracle存储过程 package

如何调用ORACLE程序包中的存储过程

java的package的名字可以使用数字么

执行函数时 PL/SQL Oracle Package 错误