oracle存储过程的作用有哪些

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;

登录后复制

语法解析:

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, --课程IDp_out_pm out number--排名)isls_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语句块进行测试,代码如下:

declarels_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存储过程的作用有哪些的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2071272.html

(0)
上一篇 2025年2月24日 07:51:57
下一篇 2025年2月18日 01:58:30

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 完全掌握Oracle进阶学习之查看执行计划

    本篇文章给大家带来了关于oracle的相关知识,其中主要介绍了查看执行计划的相关问题,希望对大家有帮助。 推荐教程:《Oracle视频教程》 今天谈一谈Oracle查看执行计划的方式,以及怎样看执行计划。 一、查看执行计划的方式 1.1、设…

    2025年2月24日
    200
  • oracle的替换函数有哪些

    oracle的替换函数有:1、translate()函数,语法“TRANSLATE(char, from, to)”;2、replace()函数,语法“REPLACE(字符串,查找值,替换值)”。 本教程操作环境:Windows7系统、Or…

    2025年2月24日
    200
  • oracle对象有哪些

    oracle对象有:1、表(Table);2、索引(Index);3、簇(Cluster);4、视图;5、Synonym;6、序列(Sequence);7、过程(Procedure)和函数(Function);8、触发器;9、约束等。 本教…

    2025年2月24日
    200
  • oracle怎么取消权限

    方法:1、利用“revoke system_privilege from user|role”命令取消系统权限;2、利用“revoke obj_privilege|allon object from  user|role”命令取消对象权限。…

    2025年2月24日
    200
  • oracle中if的用法是什么

    用法:1、“IF THEN END IF”语句决定单个条件下语句是否执行;2、“IF THEN ELSE END IF”语句决定两个条件下语句是否执行;3、“IF THEN LESIF ELSE END IF”语句决定多个条件语句是否执行。…

    2025年2月24日
    200
  • oracle中with as的用法是什么

    在oracle中,“with as”语句相当于创建一个临时表,将一个语句中的中间结果放在临时表空间,也可以用该语句定义多个临时表,语法为“with temptablename([字段列表]) as (select …)”。 本教…

    2025年2月24日
    200
  • 怎么修改oracle的sid

    方法:1、利用“shutdown immdiate”命令关闭数据库;2、修改“initSID.ora”文件,将“instance_name”内容改为新的sid;3、修改“listener.ora”文件中的“SID_NAME”项内容即可。 本…

    2025年2月24日
    200
  • oracle存储过程的游标是什么

    在oracle中,游标是SQL的一个内存工作区,由系统或用户以变量的形式定义,用于临时存储从数据库中提取的数据块;数据从数据库中传送到游标变量中后,应用程序再从游标变量中分解出需要的数据,并进行处理。 本教程操作环境:Windows10系统…

    2025年2月24日
    200
  • oracle怎么查询重复的数据

    在oracle中,可以利用count()函数配合select查询语句来查询重复的数据,语法为“select userCode from user group by userCode having count(userCode)>1”。…

    2025年2月24日
    200
  • oracle怎么查询用户的表信息

    oracle查询用户表信息的方法:1、利用“SELECT count(*) FROM user_tables”查询当前用户下的表数量;2、利用“SELECT * FROM user_tables;”查询当前用户下的表。 本教程操作环境:Wi…

    2025年2月24日
    200

发表回复

登录后才能评论