oracle存储过程学习(一)

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存储过程学习(一))