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语句中调用,存储过程不能.

相关文章

  • 一文解决ORA-01034: ORACLE not available报错

    一文解决ORA-01034: ORACLE not available报错

    这篇文章主要给大家介绍了关于ORA-01034: ORACLE not available报错解决的相关资料,这是oracle数据库启动经常会遇到的问题,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2024-03-03
  • Oracle数据库中 call 和 exec的区别

    Oracle数据库中 call 和 exec的区别

    在sqlplus中这两种方法都可以使用: exec pro_name(参数1..); call pro_name(参数1..); 但是这两者有什么区别呢?今天小编给大家介绍下oracle数据库中 call 和 exec的区别,感兴趣的朋友一起看看吧
    2016-09-09
  • Oracle 忘记密码的找回方法

    Oracle 忘记密码的找回方法

    安装oracle 11g时,居然把刚刚更改的数据库管理员密码给忘了,google查询,终于找到修改方法。
    2009-02-02
  • 基于Oracle多库查询方法(分享)

    基于Oracle多库查询方法(分享)

    下面小编就为大家分享一篇Oracle多库查询方法,具有很的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2017-12-12
  • oracle数据库ORA-01196错误解决办法分享

    oracle数据库ORA-01196错误解决办法分享

    这篇文章主要介绍了oracle数据库ORA-01196错误解决办法分享,小编觉得还是挺不错的,这里分享给大家,供需要的朋友参考。
    2017-10-10
  • Oracle提高SQL执行效率的3种方法

    Oracle提高SQL执行效率的3种方法

    Oracle提供了多种方法在执行带有大量执行计划的复杂查询时剖析过程会拖累系统的性能,感兴趣的朋友可以了解下
    2013-09-09
  • 在ORACLE中SELECT TOP N的实现方法

    在ORACLE中SELECT TOP N的实现方法

    这篇文章主要介绍了在ORACLE中SELECT TOP N的实现方法,非常不错,具有参考借鉴价值,需要的朋友参考下
    2017-01-01
  • 关于SQL执行计划错误导致临时表空间不足的问题

    关于SQL执行计划错误导致临时表空间不足的问题

    故障现象:临时表空间不足的问题已经报错过3次,客户也烦了,前两次都是同事添加5G的数据文件,目前已经达到40G,占用临时表空间主要是distinct 和group by 以及Union all 表数据量在200W左右,也不至于把40G的临时表空间撑爆。
    2013-04-04
  • oracle 11g数据库安全加固注意事项

    oracle 11g数据库安全加固注意事项

    这篇文章主要介绍了oracle11g数据库安全加固须谨慎 ,需要的朋友可以参考下
    2015-08-08
  • 在Oracle中导入dmp文件的方法

    在Oracle中导入dmp文件的方法

    这篇文章主要介绍了如何在Oracle中导入dmp文件,很简单,但很实用,需要的朋友可以参考下
    2014-09-09

最新评论