StoredProcedure :储过
procedure
:和StoredProcedure,也叫存储过程。
function
:函数
package
:包
package body
:包体

上述名3
储过程:StoredProcedureProcedure
函数:Function
包:package:包package body:包体

函数

返回值:有且只有一个,

出参:可以有(out

参数可以没有。
Create or replace function F_hiyatest(
    p_id in table1.id%TYPE
    ,
p_aa in varchar2

,p_ab out varchar2
) return varchar2
is
   v_name table1.name%type;
   v_ret varchar2;
begin
   ...
   v_ret := '0';
    return v_ret;
 end;


储过

返回值:没有,

出参:可以有(out

参数可以没有。

Create or replace produce P_hiyatest(
    p_id in table1.id%TYPE
    ,
p_aa in varchar2

,p_ab out varchar2
)
 is
   v_name table1.name%type;
   v_ret varchar2;

v_no number;

corsor c1(f_cc varchar2) is

select aa from table1 where cc=f_cc ;
begin
   ...
   v_ret := '0';
    return v_ret;
 end;

包:

可以放多个函数。

Create or replace Package body hiyatest

AS

produce P_hiyatest(
    p_id in table1.id%TYPE
    ,
p_aa in varchar2,

,p_ab out varchar2,
)
 is
   v_name table1.name%type;
   v_ret varchar2;

v_no number;

corsor c1(f_cc varchar2) is

select aa from table1 where cc=f_cc ;
begin
   ...
   v_ret := '0';
    return v_ret;
 end
P_hiyatest;

function F_hiyatest(
    p_id in table1.id%TYPE
    ,
p_aa in varchar2
) return varchar2
is
   v_name table1.name%type;
   v_ret varchar2;
begin
   ...
   v_ret := '0';
    return v_ret;
 end
F_hiyatest;

end hiyatest;

简单的说,如果想要一个方法中作完所有的处理。考虑用存储过程或函数。

区别是函数有返回值,存储过程没有。但都可以用出参当做返回值。

如果用多个方法中作完所有的处理,只能用包了。

chf@tsinghua.org.cn

http://hiyachen.cublog.cn

类似于C++的头文件和正文,包必须有包头文件和包体文件。不用includeOracle自动匹配。包名相同。

以上我的一点体会。欢迎评论。

11-14 03:40
查看更多