中科院云平台架构师,专注于数字化、智能化,技术方向:云、Linux内核、AI、MES/ERP/CRM/OA、物联网、传感器、大数据、ML、微服务。
分类: Oracle
2013-06-28 16:42:55
StoredProcedure :存储过程
procedure:和StoredProcedure一样,也叫存储过程。
function:函数
package:包头
package body:包体
上述名词分为3类:
存储过程:StoredProcedure和Procedure
函数: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;
简单的说,如果想要一个方法中作完所有的处理。考虑用存储过程或函数。
区别是函数有返回值,存储过程没有。但都可以用出参当做返回值。
如果用多个方法中作完所有的处理,只能用包了。
http://hiyachen.cublog.cn
类似于C++的头文件和正文,包必须有包头文件和包体文件。不用include,Oracle自动匹配。包名相同。
以上我的一点体会。欢迎评论。