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语句写进程序当中,需要多次编译,多次连接数据库。

  • 相关阅读:
    unicode编码表
    范仁义js课程---17、赋值运算符
    如何从Apache官网下载windows版apache服务器
    php开发工具zendstudio13破解补丁
    如何彻底删除SVN中的文件和文件夹(附恢复方法)
    proguard.cfg 配置文件
    VMware-workstation-full-12.0.1-3160714
    《吉他自学三月通》学习指导
    [Windows] Adobe Photoshop CC 2015官方原版下载 附破解补丁&破解教程
    【求神——唐伯虎点秋香】
  • 原文地址:https://www.cnblogs.com/karlz/p/14441811.html
Copyright © 2011-2022 走看看