美文网首页
oracle存储过程学习(一)

oracle存储过程学习(一)

作者: 搁浅的双鱼 | 来源:发表于2017-05-24 15:36 被阅读525次

    example

    1   create or replace procedure test(
    2        param1 varchar2,
    3        param2 out varchar2,
    4        param3 in out varchar2
    5    ) as 
    6   v_name varchar2(20);
    7   begin 
    8       v_name := 'david';
    9       param3 := v_name;
    10      dbms_output.put_line('param3:'||param3);
    11    exception
            //抛出异常处理
    12  end;
    

    说明

    • 第一行 是创建语句,如果不存在则创建,如果存在,则去替换,test为存储过程的名称

    • 第二行到第四行 是存储过程的参数,参数名,参数传递方式(IN ,OUT, IN OUT),参数类型

      参数注意点
      • 参数名不能重复
      • 传递方式详解
        • IN 表示输入参数,按值传递方式,如果不指定,则默认是IN,在存储过程中 不能被重新赋值,只能使用,相当于java中的final
        • OUT 表示输出参数,可以理解为按引用传递方式。可以作为存储过程的输出结果
        • IN OUT 即可作输入参数,也可作输出参数。即可修改
      • 参数的数据类型只需要指明类型名即可,不需要指定宽度
      • 参数的宽度由外部调用者决定
      • 存储过程可以有参数,也可以没有参数
    • 第五行 变量声明块:紧跟着的as(is)关键字,用于声明变量
    • 第六行 声明变量(存储过程需要用到的变量),必须指定宽度,
    • 第七行 过程语句块,从begin关键字开始为过程的语句块,实现具体的逻辑
    • 第十一行 异常处理块,关键字为exception,该部分可写可不写
    • 第十二行 结束块,end关键字结尾

    调用

    SQL> var p1 varchar2(10);   
    SQL> var p2 varchar2(10);   
    SQL> var p3 varchar2(10);   
    SQL> exec :p1 :='aaaa';   
    SQL> exec :p2 :='bbbb';   
    SQL> exec :p3 :='cccc';   
    SQL> exec proc1(:p1,:p2,:p3);   
    param1:aaaa   
    param2:   
    param3:david   
    SQL> exec dbms_output.put_line(:p2);   
    
    
    PL/SQL procedure successfully completed   
    p2  
    

    相关文章

      网友评论

          本文标题:oracle存储过程学习(一)

          本文链接:https://www.haomeiwen.com/subject/ppkoxxtx.html