我在package bodies 里写了个程序 pg_new.p_new_main(in_col_3   in varchar2,
                                                  in_col_4   in varchar2,
                                                  error_code out number,
                                                  error_msg  out varchar2);
我单独调试这个程序,运行正常,没有任何问题,于是我就建了个触发器,目的是当表T_TEST_1发生变化(insert)时,触发器调用pg_new.p_new_main...create or replace trigger t_test_trigger
after insert on t_test_1 for each row
declare
     out_code   number;
     out_msg    varchar2(512);
begin
     pg_new.p_new_main(:new.col_1,
                       :new.col_2,
                       out_code,
                       out_msg);
end;现在当我往 t_test_1 中插入数据时,触发器根本就触发不了各位大侠,这是为什么呀?

解决方案 »

  1.   

    你先在触发器中先不调过程,用dbms_output.put_line()看能不能被触发。
      

  2.   

    是否是过程执行是出现异常,而过程中的异常处理只是简单的将异常信息通过error_code返回后就退出,而触发器又没有处理error_code,使得你以为过程没执行。
      

  3.   

    昨天执行的时候,此触发器什么反应都没有,今天执行时,触发器有反应了,只是在执行到  
    “execute immediate 某个动态语句”  时,提示在trigger中不能有"commit".
    我确信在我的package body和trigger中没有commit,并且在调试过程序,
    也是在执行到“execute immediate 某个动态语句”时,才出错。难道是“execute immediate”隐含“commit”??
    如果是这样,我该怎么改??