库中有业务表,上面了一触发器.前天触发器代码长度突破8000行报代码过长,编译不过去,后来改成两个触发器 (功能是一样的)  .随着这两天不停的加业务处理代码,两个触发器代码和起来超过12000行.我想将后加的那个触发器改为一个包,包中有两个函数,一个实现原来的功能,一个是捕抓异常的过程.  第一个触发器内调用过程,实现原两个触发器功能.大家帮忙讨论下,哪个更优.我的触发器:(原)
create or replace trigger ins_crm_for_sa
  after insert on sp.crm_for_sa
  for each row
DECLARE
begin
..................end;
我的触发器2:(原)
create or replace trigger ins_crm_for_sa_cd  --其实跟第一个一样,就是代码不一样而已,主要是解决oracle要求触发器代码不能超过8000多的限制
  after insert on sp.crm_for_sa
  for each row
DECLARE
begin
..................end;现在我新定的包:
create or replace package pkg_cfs is  -- Author  : wanghd  testedition
  -- Created : 2007-4-20 13:46:05
  -- Purpose : 给sp传参 捕抓异常  --将第二个触发器改成过程实现
  --1.传递co_id,prod_spec_id,order_type_cd,var_prod_id
  --2.var_new_value  var_old_value 提供给后面同志的自定义参数,不规定具体传何值.
  --3.是否还需要传什么公用的参数??? 下一步可能考虑增加一个 number 的参数  或者  var_errcode  out number 其中0代表无子模块发生异常1代表有  procedure   proc_crm_for_sa(var_area_id          in  crm.area.area_id%TYPE,
                              var_co_id            in  crm.cust_order.co_id%Type ,
                              var_prod_spec_id     in  crm.cust_order.prod_spec_id%TYPE,
                              var_order_type_cd    in  sp.Crm_For_Sa.Order_Type_Id%TYPE ,
                              var_prod_id          in  crm.product.prod_id%TYPE,
                              var_new_value        in  varchar2,
                              var_old_value        in  varchar2);
  --为增加crm调测方便  ,我建议增加异常收集
  --1.建立记录异常记录的表
  --2.目前不用,需要时再用
  /*CREATE  TABLE  exception_crm_for_sa
  (
    co_id           varchar2(15)    not  null,
    prod_spec_id    varchar2(15)    not  null,
    item_spec_id    varchar2(15)    not  null,
    status          varchar2(15)    default '',
    err_sqlcode     varchar2(30)    default '',
    beizhu          varchar2(50)    default ''  )   ;
  
  */
  procedure   catch_excep_cfs (co_id          in  varchar2   ,
                               prod_spec_id   in varchar2   ,
                               item_spec_id   in varchar2   ,
                               status         in varchar2    ,
                               err_sqlcode    in varchar2  ,
                               beizhu         in  varchar2    )      ;
end pkg_cfs;