提示什么错误?
在我看来,产生错误的原因可能有两种:
 一、select aa into xx from bb where cc=:new.dd;语句错误,在存储过程,触发器中,如果select into 语句未找到任何行,则触发异常错误。
  错误提示可能是:未找到数据。
  解决方法:加入异常处理代码。
二、insert into ff(ee,gg,hh) values(:new.ee,xx||:new.yy,zz);语句错误
  因为在触发器中,:new和:old两个变量很特别,不能直接写在insert语句的values中。解决办法:将:new.ee,:new.yy的值先给变量,在用变量做插入操作。
另外,如果提示数值错误则可能是在给变量赋值时超长或类型不匹配。
给变量赋值有两种方法:into 语句赋值,:= 赋值。
  

解决方案 »

  1.   

    查一下:
    select * from user_errors;
      

  2.   

    create or  replace trigger tri_name after insert on A
    declare             --问题在这里
    xx varchar(4);
    begin
       select aa into xx from bb where cc=:new.dd;
       if xx is null then
            xx ="9999";
       end if;
       insert into ff(ee,gg,hh) values(:new.ee,xx||:new.yy,zz);
     
    end;
    create or  replace trigger tri_name after insert on A
    begin
    declare xx varchar(4);
       select aa into xx from bb where cc=:new.dd;
       if xx is null then
            xx ="9999";
       end if;
       insert into ff(ee,gg,hh) values(:new.ee,xx||:new.yy,zz);
     
    end;
    可以声明内部参数,触发器是不能带输入输出参数的。
      

  3.   

    小数点说的对
    我的Select into 选出了一个空行
    所以
    呜呜……
    害得我熬了一个下午对了,怎么把分给别人,偶刚来
    很多地方不知道礼数,
    请包涵