当前位置:数据库 > Oracle >>

【Oracle】存储过程(Procedure)与(自定义)函数(Function)的区别

【Oracle】存储过程(Procedure)与(自定义)函数(Function)的区别
 
存储过程Procedure
(自定义)函数Function
存储过程需要单独执行,不一定有返回值;
函数可以随处调用,一定有返回值,不一定是变量,也可以是表。
用于在数据库中完成特定的操作或任务
用于特定的数据
程序头部声明时不需描述返回类型
程序头部声明时必须返回类型
可以作为一个独立的语句执行
不能独立执行,必须作为表达式的一部分调用
可以通过out/in out返回零个或多个值
通过return语句返回一个值
SQL语句中不能调用
SQL语句中可以调用
 
存储过程和函数执行的本质一样:
    当存储过程和函数被执行的时候,SQL Manager会到procedure cache中去取相应的查询语句,如果在procedure cache里没有相应的查询语句,SQL Manager就会对存储过程和函数进行编译。 
例子:
 
//创建过程
create or replace procedure add_emailinfo (e_name email_info.fullname%type , e_address email_info.email_address%type)
is
begin
insert into email_info (fullname , email_address) values (e_name , e_address);
end ;
//调用过程
call add_emailinfo ('test_name' , 'test_address');
// ------------------------------------------------------------------------------------------------ // 
//创建函数
create or replace function sel_emailinfo (s_name email_info.fullname%type)
return varchar2 is
v_address varchar2 (30);
begin
select email_address into v_address from email_info where trim (fullname)=trim (s_name);
return v_address;
end ;
//调用函数
select sel_emailinfo ('test_name') from dual;
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,