天天看點

oracle 存儲過程調用方式

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

Oracle存儲過程可以有無參數存儲過程和帶參數存儲過程。 

一、無參程式過程文法

1 create or replace procedure NoParPro

2 as  

oracle 存儲過程調用方式

;

3 begin

oracle 存儲過程調用方式

;

5 exception     //存儲過程異常

6     

oracle 存儲過程調用方式

;

7 end;

        二、帶參存儲過程執行個體

 1 create or replace procedure queryempname(sfindno emp.empno%type) as

 2        sName emp.ename%type;

 3        sjob emp.job%type;

 4 begin

 5        ....

 7 exception

          ....

14 end;

15 

    三、 帶參數存儲過程含指派方式

 1 create or replace procedure runbyparmeters  (isal in emp.sal%type, 

                            sname out varchar,sjob in out varchar)

 2  as icount number;

 3  begin

 4       select count(*) into icount from emp where sal>isal and job=sjob;

 5       if icount=1 then

 6         ....

 9       else

10         ....

12       end if;

13  exception

14       when too_many_rows then

15       DBMS_OUTPUT.PUT_LINE(\'傳回值多于1行\');

16       when others then

17       DBMS_OUTPUT.PUT_LINE(\'在RUNBYPARMETERS過程中出錯!\');

18  end;

19 

  四、在Oracle中對存儲過程的調用

  過程調用方式一

 1 declare

 2        realsal emp.sal%type;

 3        realname varchar(40);

 4        realjob varchar(40);

 5  begin   //存儲過程調用開始

 6        realsal:=1100;

 7        realname:=\'\';

 8        realjob:=\'CLERK\';

 9        runbyparmeters(realsal,realname,realjob);     --必須按順序

10        DBMS_OUTPUT.PUT_LINE(REALNAME||\'   \'||REALJOB);

11  END;  //過程調用結束

12 

  過程調用方式二

 1 declare

 2       realsal emp.sal%type;

 3       realname varchar(40);

 4       realjob varchar(40);

 5 begin    //過程調用開始

 6       realsal:=1100;

 7       realname:=\'\';

 8       realjob:=\'CLERK\';

 9       runbyparmeters(sname=>realname,isal=>realsal,sjob=>realjob);  --指定值對應變量順序可變

10       DBMS_OUTPUT.PUT_LINE(REALNAME||\'   \'||REALJOB);

11 END;  //過程調用結束

12 

oracle 存儲過程調用方式