oracle存储过程的创建

作者: Arvin Chen 分类: oracle 来源: Break易站(www.breakyizhan.com)

oracle存储过程的定义

oracle存储过程,网上广泛的定义是:所谓存储过程(Stored Procedure),通俗的定义就是一段存储在数据库中,用来执行某块业务功能的程序模块。这段程序模块可能是由一段或者多段的PL/SQL代码块,或者SQL语句而组成的一系列代码块。就是一块SQL的代码块指令,通常是用来执行某一类的业务。

专业定义:oracle存储过程就是一组用于完成特定数据库功能的SQL语句集,该SQL语句集经过编译后存储在数据库系统中。在使用时候,用户通过指定已经定义的存储过程名字并给出相应的存储过程参数来调用并执行它,从而完成一个或一系列的数据库操作。

oracle存储过程的好处

oracle存储过程大大增强了SQL语言的功能和灵活性。存储过程可以用流控制语句编写,有很强的灵活性,可以完成复杂的判断和较复杂的 运算。

(1)oracle存储过程高效

oracle存储过程编译一次后,它将存储在数据库中,并在每次调用时直接执行。我们要保存到其他地方的普通sql语句(例如:记事本),必须在执行之前进行分析和编译。在运行存储过程之前,已对该数据库进行了语法和语法分析,并给出了优化的执行计划。此编译过程可以大大提高SQL语句的性能。由于执行SQL语句的大多数工作已经完成,因此可以以极快的速度执行存储过程。

(2)oracle存储过程可减少网络流量

oracle存储过程被编译并放置在数据库中。当我们远程调用它时,它不会传输大量字符串类型的SQL语句。

(3)oracle存储过程的高可重用性

oracle存储过程通常是为特定功能编写的,并且在需要完成该特定功能时可以再次调用该存储过程。

(4)oracle存储过程的高维护性

oracle当功能要求变化不大时,修改先前的存储过程将变得更加容易且耗能更少。

oracle存储过程的创建

oracle存储过程包含三部分:过程声明执行过程部分存储过程异常。通常,通用的Oracle存储过程的创建语法如下:

create [or replace] procedure oracle存储过程名
( p1 in|out datatype,
p2 in|out datatype,
...
pn in|out datatype
) is
....--声明部分
begin
....--过程体
end;

 

语法解析:

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

2、create [or replace] :如果存储过程已存在,则覆盖原始进程。

3、 in | out:存储过程具有两个参数:输入参数和输出参数。输入代表输入参数,输出代表输入参数。使用过程时,输入参数必须具有相应的变量。有一个相应的变量要接收。

4、datatype 指示与输入和输出变量相对应的数据类型。

5、is后跟该存储过程中使用的声明变量。

6、 begin . ...end中间写的就是存储过程的特定操作。

创建无参的oracle存储过程

create or replace procedure oracleNoParPro
 as  //声明  
 ;  
 begin // 执行  
 ;  
 exception//存储过程异常  
 ;  
 end;  

创建有参的oracle存储过程

create or replace procedure oracleParPro(sfindno emp.empno%type)   
as  
   sName emp.ename%type;  
   sjob emp.job%type;  
begin  
       ....  
exception  
       ....  
end; 

创建有参的oracle存储过程

create or replace procedure oracleParPro
    (isal in emp.sal%type,   
     sname out varchar,  
     sjob in out varchar)  
 as   
    icount number;  
 begin  
      select count(*) into icount from emp where sal>isal and job=sjob;  
      if icount=1 then  
        ....  
      else  
       ....  
     end if;  
exception  
     when too_many_rows then  
     DBMS_OUTPUT.PUT_LINE('返回值多于1行');  
     when others then  
     DBMS_OUTPUT.PUT_LINE('在oracleParPro过程中出错!');  
end;  

其中参数IN表示输入参数,是参数的默认模式。
OUT表示返回值参数,类型可以使用任意Oracle中的合法类型。
OUT模式定义的参数只能在过程体内部赋值,表示该参数可以将某个值传递回调用他的过程
IN OUT表示该参数可以向该过程中传递值,也可以将某个值传出去。

也可以看oracle存储过程在spring中的应用:Spring框架:在Spring中数据库的存储过程 - Break易站

oracle存储过程的调用

--执行oracle存储过程方法1::call
call oraclePro();

--执行oracle存储过程方法2:begin end
begin
oraclePro();
end;

--执行oracle存储过程方法3:SQL命令行方式
1、SQL>exec  proc_emp('参数1','参数2');//无返回值过程调用  
2、SQL>var vsal number  
     SQL> exec proc_emp ('参数1',:vsal);// 有返回值过程调用  
      或者:call proc_emp ('参数1',:vsal);// 有返回值过程调用  

oracle存储过程的删除

DROP PROCEDURE procedure_name;
  •   本文标题:oracle存储过程的创建 - Break易站
    转载请保留页面地址:https://www.breakyizhan.com/oracle/15702.html
      微信返利机器人
      免费:淘宝,京东,拼多多优惠券
      腾讯,爱奇艺,优酷的VIP视频免费解析,免费看
      即刻扫描二维码,添加微信机器人!

    发表笔记

    电子邮件地址不会被公开。 必填项已用*标注