Oracle存储过程和存储函数创建方法(详解)

 更新时间:2017年06月17日 10:16:00   投稿:jingxian  
下面小编就为大家带来一篇Oracle存储过程和存储函数创建方法(详解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

select * from emp;

-----------------存储过程------------------------

--定义

   create[or replace] procedure 存储过程名称(参数名 [in]/out 数据类型)
   is/as
   begin

--逻辑表达式 

end [存储过程名称];

--定义存储过程计算年薪,并答应输出

  create or replace procedure proc_salyears(v_no in number)
   is
   sal_years number(9,2);
   begin

 --计算年薪

select sal*12+nvl(comm,0) into sal_years from emp where empno=v_no;

--输出

dbms_output.put_line(sal_years);
   end;

--调用存储过程

 方式1:

call proc_salyears(7788);

方式2:

begin
       proc_salyears(7369);
     end; 

--out参数的存储过程

--计算年薪并返回  

  create or replace procedure proc_salyears(v_no in number,sal_years out number)
   is
   begin

 --计算年薪

select sal*12+nvl(comm,0) into sal_years from emp where empno=v_no;
   end;

--调用存储过程

declare
   v_sal number(9,2);
  begin
     proc_salyears(7876,v_sal);
     dbms_output.put_line(v_sal);
  end;

-----------------存储函数------------

--定义

create or replace function 存储函数名(参数名 in/out 数据类型)
    return 数据类型
    is|as
    begin
        return 具体的数据;
    end [存储函数名称];

--定义存储函数名计算年薪

create or replace function fun_salyears(f_no number)
    return number
    is
  sal_years number(9,2);
    begin
    select sal*12+nvl(comm,0) into sal_years from emp where empno=f_no;
        return sal_years;
    end ;

--使用存储函数

declare
  sal_yeats number(9,2);
  begin
    sal_yeats := fun_salyears(7876);
    dbms_output.put_line(sal_yeats);
  end;
 

--可简写

begin
    dbms_output.put_line(fun_salyears(7369));
  end;

--------存储过程和存储函数的区别--------

存储过程多用于项目之间的数据共享,存储函数多被存储过程调用.

存储函数可以再sql语句中调用,存储过程不能.

相关文章

  • oracle 字符串转成行

    oracle 字符串转成行

    oracle 将以逗号隔开的字符串'85,86,87' 转成行
    2009-06-06
  • oracle rac新增、替换硬盘的操作方法

    oracle rac新增、替换硬盘的操作方法

    文章详细描述了在RAC(Real Application Clusters)环境中更新磁盘组的步骤,包括删除旧磁盘的分区、添加新磁盘、重新平衡磁盘组、删除临时中转磁盘以及更新多路径配置,最终确保所有磁盘组和多路径配置正确无误,感兴趣的朋友跟随小编一起看看吧
    2024-12-12
  • Oracle如何实现把B表某一字段更新到A表

    Oracle如何实现把B表某一字段更新到A表

    这篇文章主要给大家介绍了关于Oracle如何实现把B表某一字段更新到A表的相关资料,在Oracle中使用一个表的字段来更新另一个表的字段,可以采用UPDATE SELECT语句,文中给出了详细的代码示例,需要的朋友可以参考下
    2023-07-07
  • 快速解除oracle dataguard的方法

    快速解除oracle dataguard的方法

    文章介绍了如何快速解除Oracle Data Guard配置的过程,包括备份SPFILE到PFILE、调整主库模式、修改主库DG配置参数、删除Standby Log以及重启数据库等步骤,感兴趣的朋友一起看看吧
    2025-03-03
  • oracle ORA-00988 missing or invalid password 错误

    oracle ORA-00988 missing or invalid password 错误

    在设置数据库实例的密码时,注意不要以数字开头,否则您将会遇到 ORA-00988 missing or invalid password (口令缺失或无效) 错误
    2015-01-01
  • Maven中央仓库正式成为Oracle官方JDBC驱动程序组件分发中心(推荐)

    Maven中央仓库正式成为Oracle官方JDBC驱动程序组件分发中心(推荐)

    这篇文章主要介绍了Maven中央仓库正式成为Oracle官方JDBC驱动程序组件分发中心,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-07-07
  • PLSQL安装与使用图文教程

    PLSQL安装与使用图文教程

    这篇文章详细介绍了PL/SQL的下载、安装、配置以及使用方法,内容包括如何下载和安装PL/SQL和Oracle Instant Client,本文通过图文并茂的形式给大家介绍的非常详细,感兴趣的朋友一起看看吧
    2025-02-02
  • Centos7下oracle12c的安装与配置图文教程(详细)

    Centos7下oracle12c的安装与配置图文教程(详细)

    这篇文章主要介绍了Centos7下oracle12c的安装与配置教程(详细),本文图文并茂通过实例代码相结合给大家讲解的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-11-11
  • win10 oracle11g彻底删除并重装教程

    win10 oracle11g彻底删除并重装教程

    这篇文章主要介绍了win10 oracle11g彻底删除并重装教程,文中步骤介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-06-06
  • 深入探讨:oracle中row_number() over()分析函数用法

    深入探讨:oracle中row_number() over()分析函数用法

    本篇文章是对oracle中row_number() over()分析函数的用法进行了详细的分析介绍,需要的朋友参考下
    2013-05-05

最新评论