首页 > 数据库 > Oracle > 正文

oracle存储过程的作用有哪些

青灯夜游
发布: 2022-02-24 17:58:41
原创
4983人浏览过
oracle存储过程的作用有:1、简化复杂的操作,降低总体开发成本;2、增加数据独立性;3、可以有效降低错误出现的几率,提高安全性;4、提高性能。

oracle存储过程的作用有哪些

本教程操作环境:Windows7系统、Oracle 11g版、Dell G3电脑。

Oracle存储过程在实际数据库开发过程当中会经常使用到,作为一个数据库开发者必备的技能,它有着SQL语句不可替代的作用。所谓存储过程,就是一段存储在数据库中执行某块业务功能的程序模块。它是由一段或者多段的PL/SQL代码块或者SQL语句组成的一系列代码块。

存储过程的作用(优点):

  • 简化复杂的操作,降低总体开发成本。

    存储过程把实际执行的业务逻辑PL/SQL块和多条SQL语句封装到存储过程当中,其它开发者只需要调用写好的过程,获取想要的结果,不需要重新理解业务。把业务抽取出来由专门的人来编写。

  • 增加数据独立性。

    它的作用和视图的作用类似,假如表的基础数据发生变化,我们只需要修改过程当中的代码,而不需要修改调用程序。使得用户程序不需要直接面对基础数据进行编写代码。使得代码内聚程度更高,耦合度更低。

  • 提高安全性。

    使用存储过程有效降低了错误出现的几率。如果不使用存储过程要实现某项操作可能需要执行多条单独的SQL语句,而过多的执行步骤很可能造成更高的出现错误几率。

  • 提高性能。

    实际开发过程中,一个业务模块功能的开发可能需要用到多个SQL语句,多个PL/SQL程序块才能解决问题。把它编写进过程,Oracle只需要一次编译,以后随时可以调用。如果不使用过程,直接把许多SQL语句写进程序当中,需要多次编译,而且需要多次连接数据库,大大的降低了性能。

创建Oracle存储过程语法:

create [or replace] procedure 过程名
( p1 in|out datatype,
  p2 in|out datatype,
  ...
  pn in|out datatype
    
) is 
    
    ....--声明部分
    begin
    
    ....--过程体
    end;
登录后复制

语法解析:

存了个图
存了个图

视频图片解析/字幕/剪辑,视频高清保存/图片源图提取

存了个图 17
查看详情 存了个图

1、procedure 关键字是创建存储过程的命令。

2、create [or replace] :如果存储过程已经存在则覆盖替代原有的过程。

3、in|out :存储过程具有入参和出参两种参数选择,in表示的是入参,out表示的是出参,在使用过程的时候,入参必须得有对应的变量传入,出参得有对应的变量接收。

4、datatype表示出入参变量对应的数据类型。

5、is后面跟着的是过程当中使用到的声明变量。

6、begin...end 中间编写的就是存储过程的具体操作。

例子1、创建一个存储过程计算学生某一个课程中成绩在班中的排名,使用存储过程进行计算,返回对应的排名,代码如下:

create or replace procedure sp_score_pm(
p_in_stuid in varchar2,--学号
p_in_courseid in  varchar2, --课程ID
p_out_pm out number--排名
)
is
ls_score number:=0;
ls_pm number:=0;
begin
  --获取该学生的成绩
  select t.score into ls_score from score t
   where t.stuid = p_in_stuid
     and t.courseid = p_in_courseid;
  --获取成绩比该学生高的人数
  select count(1) into ls_pm from score t
   where t.courseid = p_in_courseid
   and  t.score>ls_score;
   --得到该学生的成绩排名
   p_out_pm:=ls_pm+1;
exception
  when no_data_found  then
     dbms_output.put_line('该学生的课程:'||p_in_courseid|| '的成绩在成绩表中找不到');
end;
登录后复制

通过上面的代码,我们可以直接在SQL窗口执行编译,编译成功后,我们就可以调用存储过程来获取学生对应的课程成绩排名了,存储过程需要出入参赋值,因此我们可以通过PL/SQL语句块进行测试,代码如下:

declare
ls_pm number;--排名
begin
  --SC201801001
  sp_score_pm('SC201801001','R20180101',ls_pm);
  dbms_output.put_line('学号:SC201801001,课程号:R20180101 的成绩排名是:'||ls_pm);
  sp_score_pm('SC201801001','R20180102',ls_pm);
  dbms_output.put_line('学号:SC201801001,课程号:R20180102 的成绩排名是:'||ls_pm);
  --SC201801002
  sp_score_pm('SC201801002','R20180101',ls_pm);
  dbms_output.put_line('学号:SC201801002,课程号:R20180101 的成绩排名是:'||ls_pm);
  sp_score_pm('SC201801002','R20180102',ls_pm);
  dbms_output.put_line('学号:SC201801002,课程号:R20180102 的成绩排名是:'||ls_pm);
  
end;
登录后复制

结果如下:

1.png

推荐教程:《Oracle教程

以上就是oracle存储过程的作用有哪些的详细内容,更多请关注php中文网其它相关文章!

相关标签:
最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号