Oracle过程与函数的区别分析

 更新时间:2014年08月12日 17:05:37   投稿:mdxy-dxy  
在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 

相关文章

  • Oracle执行Update语句的几种方式

    Oracle执行Update语句的几种方式

    这篇文章介绍了Oracle执行Update语句的几种方式,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-05-05
  • Oracle系列学习之Oracle正则表达式详解

    Oracle系列学习之Oracle正则表达式详解

    正则表达式应用广泛,在数据库中也有很大的应用空间,这篇文章主要给大家介绍了关于Oracle系列学习之Oracle正则表达式的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2023-12-12
  • window中oracle环境变量设置方法分享

    window中oracle环境变量设置方法分享

    这篇文章主要介绍了window中oracle环境变量设置的方法,需要的朋友可以参考下
    2014-03-03
  • oracle 存储过程、函数和触发器用法实例详解

    oracle 存储过程、函数和触发器用法实例详解

    这篇文章主要介绍了oracle 存储过程、函数和触发器用法,结合实例形式详细分析了oralce 存储过程、函数和触发器具体功能、原理、定义、使用方法及相关操作注意事项,需要的朋友可以参考下
    2020-02-02
  • Oracle Job时间间隔设置

    Oracle Job时间间隔设置

    本文介绍了创建、运行、删除Job的方法,以及列举了常见的设置时间间隔执行的方法,小伙伴们可以参考一下。
    2016-05-05
  • oracle数据库添加或删除一列的sql语句

    oracle数据库添加或删除一列的sql语句

    需要注意的一点,如果要修改的表,不是当前的用户的表,那么就需要添加上用户的名称。以及有修改此表的权限
    2012-05-05
  • Oracle中sys和system的区别小结

    Oracle中sys和system的区别小结

    SYS用户具有DBA权限,并且拥有SYS模式,只能通过SYSDBA登陆数据库。是Oracle数据库中权限最高的帐号 SYSTEM具有DBA权限。但没有SYSDBA权限。平常一般用该帐号管理数据库就可以了。
    2009-11-11
  • Oracle进阶DECODE函数使用详解

    Oracle进阶DECODE函数使用详解

    这篇文章介绍了Oracle进阶DECODE函数的使用方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-12-12
  • Oracle查看表结构命令详解

    Oracle查看表结构命令详解

    这篇文章主要介绍了Oracle查看表结构命令详解的相关资料,需要的朋友可以参考下
    2017-07-07
  • Navicat连接Oracle数据库的详细步骤与注意事项

    Navicat连接Oracle数据库的详细步骤与注意事项

    Navicat是一套可创建多个连接的数据库管理工具,用以方便管理各种数据库,下面这篇文章主要给大家介绍了关于Navicat连接Oracle数据库的详细步骤与注意事项,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-04-04

最新评论