欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Oracle过程与函数的区别分析

程序员文章站 2023-10-27 10:02:04
oracle过程和函数相信大家都比较了解,下面就为您详细介绍oracle过程和函数二者之间的区别,希望可以让您对oracle过程和函数有更深的认识。 oracle过程和函...

oracle过程和函数相信大家都比较了解,下面就为您详细介绍oracle过程和函数二者之间的区别,希望可以让您对oracle过程和函数有更深的认识。

oracle过程和函数都以编译后的形式存放在数据库中,函数可以没有参数也可以有多个参数并有一个返回值。过程有零个或多个参数,没有返回值。函数和过程都可以通过参数列表接收或返回零个或多个值,函数和过程的主要区别不在于返回值,而在于他们的调用方式。oracle过程是作为一个独立执行语句调用的:

pay_involume(invoice_nbr,30,due_date);

函数以合法的表达式的方式调用:

order_volumn:=open_orders(sysdate,30);

创建过程的语法如下:

create [ or replace] procedure [schema.]procedure_name 
[parameter_lister] 
{as|is} 
declaration_section 
begin 
executable_section 
[exception 
exception_section] 
end [procedure_name] 

每个参数的语法如下:

paramter_name mode datatype [(:=|default) value]

mode有三种形式:in、out、inout。

in表示在调用过程的时候,实际参数的取值被传递给该过程,形式参数被认为是只读的,当过程结束时,控制会返回控制环境,实际参数的值不会改变。

out在调用过程时实际参数的取值都将被忽略,在过程内部形式参数只能是被赋值,而不能从中读取数据,在过程结束后形式参数的内容将被赋予实际参数。

inout这种模式是in和out的组合;在oracle过程内部实际参数的值会传递给形式参数,形势参数的值可读也可写,过程结束后,形势参数的值将赋予实际参数。

创建函数的语法和过程的语法基本相同,唯一的区别在于函数有returen子句

create [ or replace] finction [schema.]function_name 
[parameter_list] 
return returning_datatype 
{as|is} 
declaration_section 
begin 
executable_section 
[exception] 
exception_section 
end [procedure_name]

在执行部分函数必须有哟个或多个return语句。

在创建函数中可以调用单行函数和组函数,例如:

create or replace function my_sin(degreesin in number) 
return number 
is  
pi number=acos(-1); 
radiansperdegree number; 
 
begin 
radiansperdegree=pi/180; 
return(sin(degreesin*radiansperdegree)); 
end