oracle中存储函数与存储过程的区别介绍

 更新时间:2017年10月23日 10:32:36   作者:Jamyson  
这篇文章主要介绍了oracle中存储函数与存储过程的区别介绍,非常不错,具有参考借鉴价值,需要的朋友可以参考下

在oracle中,函数和存储过程是经常使用到的,他们的语法中有很多相似的地方,可是也有它们的不同之处,这段时间刚学完函数与存储过程,来给自己做一个总结:

一:存储过程:简单来说就是有名字的pl/sql块。

语法结构: 

create or replace 存储过程名(参数列表)
  is
   --定义变量
  begin
   --pl/sql
  end;

    案例:         

create or replace procedure add_(a int,b int)
  is 
   c int;
  begin
   c:=a+b;
   dbms_output.put_line(c);
  end;

    调用存储过程

 declare
  begin 
   add_(12,34);
  end;

存储过程的三种类型参数:

输入参数(默认) in

输出参数 out

输入输出参数 in out

函数定义

        语法结构:         

 create or replace function 函数名(参数列表) return 类型
   is
   begin
   end;

        案例:         

create or replace function f1(n1 dec,n2 dec) return dec
   is
    r dec(19,2);
   begin
    r:=n1/n2;
    return r;
   exception
    when zero_divide then
     dbms_output.put_line('除数不能为0');
     return 0;
   end;

存储过程与存储函数的区别和联系:

相同点:1.创建语法结构相似,都可以携带多个传入参数和传出参数;

2.都是一次编译,多次运行;

不同点:1.存储过程定义关键字用procedure,函数定义用function;

2.存储过程中不能用return返回值,但函数中可以,而且函数中必须有return返回;

3.执行方式略有不同,存储过程的执行方式有两种(1.使用execute;2.使用begin和end)函数除了

存储过程的两种方式,还可以当做表达试使用,例如放在select中(select f1() from dual;)

总结:如果只有一个返回值,用存储函数,否则,一般用存储过程

以上所述是小编给大家介绍的oracle中存储函数与存储过程的区别介绍,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

相关文章

  • 查询Oracle数据库表是否被锁的实现方式

    查询Oracle数据库表是否被锁的实现方式

    本文介绍了查询Oracle数据库表是否被锁的方法,包括查询锁表的会话、人员信息,根据object_id查询表名,以及根据会话ID查询和停止本地进程,同时,还提到在尝试加锁之前判断记录是否已经被锁定,以避免锁定已锁定的记录
    2025-02-02
  • oracle group by语句实例测试

    oracle group by语句实例测试

    本文将详细介绍oracle group by语句,以实例进行测试,需要的朋友可以参考下
    2012-11-11
  • Oracle数据库如何删除归档日志文件

    Oracle数据库如何删除归档日志文件

    这篇文章主要给大家介绍了关于Oracle数据库如何删除归档日志文件的相关资料,当Oracle中的归档日志空间满时,则需要把它清空,否则将会影响数据库正常运行,将无法正常登入ORACLE,需要的朋友可以参考下
    2023-11-11
  • Oracle数据库统计信息方法详解

    Oracle数据库统计信息方法详解

    这篇文章主要介绍了如何查看和收集Oracle数据库中的统计信息,包括表、索引和列的统计信息,介绍了DBMS_STATS包的功能和使用方法,以及如何通过分析和删除统计信息来优化数据库性能,需要的朋友可以参考下
    2024-12-12
  • Oracle数据库:查询序列、删除序列方式

    Oracle数据库:查询序列、删除序列方式

    文章简要介绍了如何在数据库中查询和删除序列,首先,展示了如何查询当前用户下的序列,并通过示例说明了序列已创建,接着,介绍了如何查询所有序列,最后,详细说明了如何删除序列,并提供了删除命令和示例
    2025-02-02
  • oracle10g发送email示例

    oracle10g发送email示例

    本文介绍了通过Oracle10g发送Email的实例,该Procedure支持中文邮件、HTML代码、多收件人。 ,需要的朋友可以参考下
    2014-01-01
  • 在Oracle数据库中同时更新两张表的简单方法

    在Oracle数据库中同时更新两张表的简单方法

    这篇文章主要介绍了在Oracle数据库中同时更新两张表的简单方法,同时介绍了一种差异性合并更新的方法,需要的朋友可以参考下
    2015-11-11
  • Oracle表中重复数据去重的方法实例详解

    Oracle表中重复数据去重的方法实例详解

    这篇文章主要介绍了Oracle表中重复数据去重的方法实例详解的相关资料,需要的朋友可以参考下
    2017-07-07
  • 使用Oracle跟踪文件的问题详解

    使用Oracle跟踪文件的问题详解

    从跟踪文件的产生的来源来看,跟踪文件又可以分为两类:一类是数据库的操作人员有意生成的;另一类则是由于出现了异常错误,由数据库自动生成的,本文给大家介绍使用Oracle的跟踪文件的方法,需要的朋友参考下吧
    2021-06-06
  • Oracle数据泵EXPDP/IMPDP导出导入功能详细深入解析

    Oracle数据泵EXPDP/IMPDP导出导入功能详细深入解析

    这篇文章主要给大家介绍了关于Oracle数据泵EXPDP/IMPDP导出导入功能的相关资料,数据泵导出/导入属于逻辑备份,热备份与冷备份都属于物理备份,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2023-12-12

最新评论