ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 触发器trigger中调用包package(包中含:存储过程procedure及函数function)_plsql

触发器trigger中调用包package(包中含:存储过程procedure及函数function)_plsql

原创 Linux操作系统 作者:wisdomone1 时间:2010-08-13 23:15:23 0 删除 编辑

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

请登录后发表评论 登录
全部评论
提供针对oracle初学者及进阶的数据库培训,欢迎大家咨询: 微信: wisdomone 微信公众号: lovedb 工作经历: 中国普天 北京科蓝 北京云和恩墨 北京神州新桥

注册时间:2008-04-04

  • 博文量
    2189
  • 访问量
    12689906