Oracle預存程序介紹

來源:互聯網
上載者:User

Oracle預存程序包含三部分:過程聲明,執行過程部分,預存程序異常。

  1. Oracle預存程序可以有無參數預存程序和帶參數預存程序。   
  2. 一、無參程式過程文法  
  3. 1 create or replace procedure NoParPro  
  4. 2 as  ;  
  5. 3 begin  
  6. 4 ;  
  7. 5 exception     //預存程序異常  
  8. 6     ;  
  9. 7 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  

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.