Oracle建立儲存過程

zhenghaishu發表於2014-08-10
Oracle建立儲存過程


函式更傾向於處理資料運算,並最終返回處理結果。而儲存過程更傾向於資料庫操作,並不返回值。

(1)語法
create or replace procedure 儲存過程名稱 as
begin
儲存過程定義
end 儲存過程名稱;

或者:

create or replace procedure 儲存過程名稱 as

begin

儲存過程定義

end;


(2)最簡單的儲存過程示例

create or replace procedure test_proc as

begin

commit;

end test_proc;

/

執行後會提示儲存過程建立成功。當然,這個儲存過程沒有具體的功能。


(3)建立儲存過程,實現表emp中的每位員工工資增加2倍
對於表emp,如果需要獲得有關該表的資訊,如表中所有員工的姓名,應該使用自定義函式;如果需要操作表中資料,如更新某列的值,則應該使用儲存過程。
更新表emp_copy中列sal值為原來的3倍的儲存過程如下所示:
create or replace procedure update_sal as
begin
  update emp_copy set sal = sal * 3;
  commit;
end update_sal;
/
 
檢視儲存過程資訊
col object_name format a15;
col object_type format a15;
col status format a15;
select object_name, object_type, status from user_objects where object_name = upper('update_sal');

OBJECT_NAME    OBJECT_TYPE    STATUS
--------------- --------------- ---------------
UPDATE_SAL    PROCEDURE    VALID

col name format a15;
col type format a15;
col line format 999;
col text format a40;
SQL> select * from user_source where name = upper('update_sal');

NAME        TYPE        LINE TEXT
--------------- --------------- ---- ----------------------------------------
UPDATE_SAL    PROCEDURE       1 procedure update_sal as
UPDATE_SAL    PROCEDURE       2 begin
UPDATE_SAL    PROCEDURE       3   update emp_copy set sal = sal * 3;
UPDATE_SAL    PROCEDURE       4   commit;
UPDATE_SAL    PROCEDURE       5 end update_sal;
 
執行儲存過程
方法一:
begin
  update_sal;
end;
/

PL/SQL procedure successfully completed.

方法二:
execute update_sal;

PL/SQL procedure successfully completed.
 
執行完後用“select sal from emp_copy;”驗證,發現sal資料都更新為原來的3倍。

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

相關文章