觸發器trigger中呼叫包package(包中含:儲存過程procedure及函式function)_plsql

wisdomone1發表於2010-08-13

create or replace package pkg_trig_trans --定義包(也叫包規範)
is
function f_trunc_a(v_a test_trim.a%type)
return test_trim.a%type; --函式
procedure p_upper_b(v_b in out test_trim.b%type);--過程
end;
/

create or replace package body pkg_trig_trans --包體,具體實現邏輯
is
function f_trunc_a(v_a test_trim.a%type)
return test_trim.a%type
is
begin
 return trunc(v_a); --用到了trunc函式
end f_trunc_a;

procedure p_upper_b(v_b in out test_trim.b%type)
is
begin
v_b:=upper(v_b);
end p_upper_b;
end pkg_trig_trans;
/

 


create or replace trigger trig_call_pkg --定義觸發器
before insert on test_trim
for each row
begin
 :new.a:=pkg_trig_trans.f_trunc_a(:new.a); --觸發器內部呼叫包中的函式,注意引數,:new.列名
 pkg_trig_trans.p_upper_b(:new.b);--觸發器內部呼叫包中的過程
end;
/

set serveroutput on

 

SQL> insert into test_trim values(85.33,'sun');

1 row created.

SQL> commit;

Commit complete.

SQL> set serveroutput on
SQL> select * from test_trim;

         A B
---------- --------------------
        99 MV1
        99 HAHA
        99 HAHA2
        98 MVP
        77 CAO
        85 SUN  ---這就是觸發器呼叫包(轉變插入列a,b各為取整及大寫的結果)

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

相關文章