資料庫開發---常用物件-儲存過程

lff1530983327發表於2015-01-12

---儲存過程

---過程的建立

create or replace procedure p_test_1(引數) as

begin

  procedure body;

end;

 

 

   儲存過程中引數的型別

 

         IN:表示是一個輸入引數,可以指定預設值。如省略引數型別,則預設為in型別

 

         OUT:表示是一個輸出引數

 

         IN OUT:既可以作為一個輸入引數,也可以作為一個輸出引數來輸出結果

---過程的執行

 EXECUTE CALL procedure_name [(argument_list)]

---建立一個過程,以JOB為引數,查詢該JOB的最高工資、最低工資、平均工資。

create or replace procedure display_sal (ejob in emp.job%type) as

  v_max emp.job%type;

  v_min emp.job%type;

  v_avg emp.job%type;

begin

  select avg(sal) into v_avg from emp where job = ejob;

  select max(sal) into v_max from emp where job = ejob;

  select min(sal) into v_min from emp where job = ejob;

  DBMS_OUTPUT.PUT_LINE('DEPT ' || ejob || ' avg sal:' || v_avg);

  DBMS_OUTPUT.PUT_LINE('DEPT ' || ejob || ' max sal:' || v_max);

  DBMS_OUTPUT.PUT_LINE('DEPT ' || ejob || ' min sal:' || v_min);

EXCEPTION

  WHEN NO_DATA_FOUND THEN

    DBMS_OUTPUT.PUT_LINE('NOT FOUND RECORD!');

END display_sal;

COMMIT;

execute displace_sal('SALES');

 

儲存過程引數的傳遞方式:

              按位置傳遞:

                   實參按順序將值傳給形參

                   EXECUTE ED_EMP(7900,:t_name,:t_sal);

                   EXECUTE ED_EMP(8000,'TEST2',20);

              按名字傳遞

                   EXECUTE ED_EMP(v_name=>'ABCDE',v_dept=>10,v_no=>8003);

              混合傳遞

                 EXECUTE ED_EMP(8005,v_dept=>20,v_name=>'TEST5');

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30018455/viewspace-1399240/,如需轉載,請註明出處,否則將追究法律責任。

相關文章