zoukankan      html  css  js  c++  java
  • oracle存储过程

     

    1、语法结构

    create [or replaceprocedure 过程名  --or replace 如果存储过程已经存在则覆盖替代原有的过程

    ( p1 in|out datatype,           ----入参和出参两种参数
      p2 in|out datatype,          ---datatype表示出入参变量对应的数据类型
      ...
      pn in|out datatype   
         
    is 
         
        ....--过程当中使用到的声明变量
     
        begin
         
        ....--存储过程的具体操作
     
        end;
     
    2、例子:调用存储过程来获取学生对应的课程成绩排名
    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;
     
    3、优点

    1、降低总体开发成本。存储过程把执行的业务逻辑PL/SQL块和多条SQL语句封装到存储过程,只需要调用写好的过程,获取想要的结果 。

    2、增加数据的独立性。它的作用和视图的作用类似,假如表的基础数据发生变化,我们只需要修改过程当中的代码,而不需要修改调用程序。 

    3、提高性能。 一个功能的开发可能需要多个SQL语句,多个PL/SQL程序块 ,使用存储过程,Oracle只需一次编译,随时可以调用。 如果直接把许多SQL语句写进程序当中,需要多次编译,多次连接数据库。

  • 相关阅读:
    项目选题报告答辩总结
    第七次作业--项目需求分析(团队)
    第六次作业--结对编程第二次
    第四次作业——项目选题报告
    eclipse 部署maven 的web 项目提示找不到类的问题
    Spring中的applicationContext.xml与SpringMVC的xxx-servlet.xml的区别
    在eclipse中maven web项目搭建
    eclipse maven plugin 插件 安装 和 配置
    Maven最佳实践:Maven仓库
    eclipse jadclipse 反编译安装说明
  • 原文地址:https://www.cnblogs.com/karlz/p/14441811.html
Copyright © 2011-2022 走看看