Oracle存储过程介绍


Oracle存储过程包含三部分:过程声明,执行过程部分,存储过程异常。

  1. Oracle存储过程可以有无参数存储过程和带参数存储过程。   
  2. 一、无参程序过程语法  
  3. create or replace procedure NoParPro  
  4. as  ;  
  5. begin  
  6. 4 ;  
  7. 5 exception     //存储过程异常  
  8. 6     ;  
  9. end;  
  10. 8   
  11.   
  12.         二、带参存储过程实例  
  13.  1 create or replace procedure queryempname(sfindno emp.empno%type) as  
  14.  2        sName emp.ename%type;  
  15.  3        sjob emp.job%type;  
  16.  4 begin  
  17.  5        ....  
  18.  7 exception  
  19.           ....  
  20. 14 end;  
  21. 15   
  22.   
  23.     三、 带参数存储过程含赋值方式  
  24.  1 create or replace procedure runbyparmeters  (isal in emp.sal%type,  
  25.                             sname out varchar,sjob in out varchar)  
  26.  2  as icount number;  
  27.  3  begin  
  28.  4       select count(*) into icount from emp where sal>isal and job=sjob;  
  29.  5       if icount=1 then  
  30.  6         ....  
  31.  9       else  
  32. 10         ....  
  33. 12       end if;  
  34. 13  exception  
  35. 14       when too_many_rows then  
  36. 15       DBMS_OUTPUT.PUT_LINE('返回值多于1行');  
  37. 16       when others then  
  38. 17       DBMS_OUTPUT.PUT_LINE('在RUNBYPARMETERS过程中出错!');  
  39. 18  end;  
  40. 19   
  41.   
  42.   四、在Oracle中对存储过程的调用  
  43.   过程调用方式一  
  44.  1 declare  
  45.  2        realsal emp.sal%type;  
  46.  3        realname varchar(40);  
  47.  4        realjob varchar(40);  
  48.  5  begin   //存储过程调用开始  
  49.  6        realsal:=1100;  
  50.  7        realname:='';  
  51.  8        realjob:='CLERK';  
  52.  9        runbyparmeters(realsal,realname,realjob);     --必须按顺序  
  53. 10        DBMS_OUTPUT.PUT_LINE(REALNAME||'   '||REALJOB);  
  54. 11  END;  //过程调用结束  
  55. 12   
  56.   
  57.   过程调用方式二  
  58.  1 declare  
  59.  2       realsal emp.sal%type;  
  60.  3       realname varchar(40);  
  61.  4       realjob varchar(40);  
  62.  5 begin    //过程调用开始  
  63.  6       realsal:=1100;  
  64.  7       realname:='';  
  65.  8       realjob:='CLERK';  
  66.  9       runbyparmeters(sname=>realname,isal=>realsal,sjob=>realjob);  --指定值对应变量顺序可变  
  67. 10       DBMS_OUTPUT.PUT_LINE(REALNAME||'   '||REALJOB);  
  68. 11 END;  //过程调用结束  
  69. 12  

相关内容