首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 冲浪宝典 > 网络资源 > trigger & procedure
【标  题】:trigger & procedure
【关键字】:trigger,procedure
【来  源】:http://www.cublog.cn/u/18825/showart.php?id=124114

trigger & procedure

 
 
t_hes_manage_relation
         |
         |after insert or
         | update of tree_id,secretary,manager,use_flag
         | or delete
         | on t_hes_manage_relation 
         | for each row
         |
tg_secretary_exchange_store.trg
         |
         |调用存储过程
         |
adjust_temp_relation.prc
         |
         |修改临时表
         |
t_hes_manage_temp(建立人员如(秘书,经理)与分行的联系)
 
create or replace trigger tg_secretary_exchange_store
  after insert or
  update of tree_id,secretary,manager,use_flag
  or delete
  on t_hes_manage_relation 
  for each row
--建立人(秘书,区域经理,分行经理,业务经理)与分行之间的联系
declare
  PRAGMA AUTONOMOUS_TRANSACTION;
  -- local variables here
begin

    if inserting then
--在关系中加上(秘书,区域经理,分行经理,业务经理)
   /*
             调整 :new.manager  的管理关系对应表
             调整 :new.secretary  的管理关系对应表
      */
      adjust_temp_relation(:new.tree_id,:new.manager,1);
      adjust_temp_relation(:new.tree_id,:new.secretary,1);

--在关系中对(秘书,区域经理,分行经理,业务经理)进行(修改,不启用)操作
 elsif updating then
   /*
          if :new.manager != :old.manager then
             调整 :old.manager  的管理关系对应表
             调整 :new.manager  的管理关系对应表
          else
              if :new.use_flag != :old.use_flag then
                 调整 :new.manager  的管理关系对应表
              end if;
          end if;
     
        if :new.secretary != :old.:secretary then
          调整 :old.secretary  的管理关系对应表
          调整 :new.secretary  的管理关系对应表
          else
              if :new.use_flag != :old.use_flag then
                 调整 :new.secretary  的管理关系对应表
              end if;
         end if;
      */
          if :new.manager <> :old.manager then
            adjust_temp_relation(:old.tree_id,:old.manager,0);
            adjust_temp_relation(:new.tree_id,:new.manager,1);
          else
              if :new.tree_id <> :old.tree_id then
                 adjust_temp_relation(:old.tree_id,:old.manager,0);
                adjust_temp_relation(:new.tree_id,:new.manager,1);
              end if;
              if :new.use_flag <> :old.use_flag then
                adjust_temp_relation(:new.tree_id,:new.manager,:new.use_flag);
              end if;
          end if;
     
       if :new.secretary <> :old.secretary then
              adjust_temp_relation(:old.tree_id,:old.secretary,0);
              adjust_temp_relation(:new.tree_id,:new.secretary,1);
          else
              if :new.tree_id <> :old.tree_id then
                adjust_temp_relation(:old.tree_id,:old.secretary,0);
                adjust_temp_relation(:new.tree_id,:new.secretary,1);
              end if;
              if :new.use_flag <> :old.use_flag then
                  adjust_temp_relation(:new.tree_id,:new.secretary,:new.use_flag);
              end if;
         end if;

  elsif deleting then
   /*
             调整 :old.manager  的管理关系对应表
             调整 :old.secretary  的管理关系对应表
      */
      adjust_temp_relation(:old.tree_id,:old.manager,0);
      adjust_temp_relation(:old.tree_id,:old.secretary,0);
    end if;
   
    commit;
exception
 when no_data_found then
  raise_application_error(-20999, '触发器信息(tg_secretary_exchange_store)发生异常,请检查 !');
end tg_secretary_exchange_store;
/
 
create or replace procedure adjust_temp_relation(tree_id1 in varchar,secretary1 in varchar,flag1 in number) is
begin
  if length(trim(nvl(secretary1,''))) >0 then
      delete from T_HES_MANAGE_TEMP t
      where t.user_id= secretary1
      and t.store_record_id in (select record_id from t_hes_manage_relation where tree_id like tree_id1||'%');
     
       if flag1 = 1 then
        insert into T_HES_MANAGE_TEMP t
        select record_id ,secretary1,flag1 from t_hes_manage_relation where tree_id like tree_id1||'%';
      end if;
  end if;
end adjust_temp_relation;
 
感谢杨光全网友ing:【上一篇】
oracle导出表结构的方法二:【下一篇】
【相关文章】
  • .NET调用procedure的方法
  • oracle procedure!
  • Reformat and_recover hard disk procedure
  • Password Recovery Procedure for the Cisco
  • Project procedure (Cluster 3.0)
  • Procedure in Oracle
  • Getting the Stored Procedure Names in a Database
  • Calling a Stored Procedure in a Database
  • Creating a Stored Procedure or Function in oralce
  • tcl study: procedure, global, upvar
  • 【随机文章】
  • [原创]全面跟踪与剖析尼姆达(Nimda)病毒
  • Maya 制作龙卷风效果
  • AS控制声音教程 setPan 和 setVolume
  • 怎么用ASP实现分页(一)
  • C# 中如何自定义事件
  • oracle启动命令
  • C#中数组复制的4种方法
  • 传奇世界 我认为的各职业完美技能树
  • Director 8.5 简单基础实例教程(1)
  • Window Events
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 软讯网络 All Rigths Reserved.