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/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/9240380/viewspace-670957/