其实提示是19行实际并不一定是在19行出错,有可能是前面就已经有错。
你的触发器是insert、 update还是delete的时候触发的啊?

解决方案 »

  1.   

    create or replace trigger tr_af_DEVRESOUSE2
    after insert or update on DEVRESOUSE
    for each row
    declare
    v_devid char(18);
    v_eeid char(18);
    v_volume number;
    v_confnumber number;
    v_usecnumber number;
    v_oldconfnumber number;
    v_oldusecnumber number;
    v_outvolume number;
    v_convolume number;
    v_devvolume number;
    v_sysid char(18);
    begin
    v_devid:=:new.PARENTID;
    v_confnumber:=:new.CONFNUMBER;
    v_usecnumber:=:new.USECNUMBER;
    if inserting then
    v_eeid:=:new.EEID;
    select a.VOLUME into v_volume from DEVMODULE a,DEVRESOUSE b
    where a.PARENTID=b.EEID and b.PARENTID=v_devid; select VOLUME into v_devvolume from DEVICECOM where DEVID=v_devid;
    v_devvolume:=v_devvolume+v_confnumber*v_volume;
    update DEVICECOM set VOLUME=v_devvolume where DEVID=v_devid; select a.SYSID,a.CONVOLUME,a.OUTVOLUME into v_sysid,v_convolume,v_outvolume from SYSDC a,DEVICECOM b
    where a.SYSID=b.PARENTID and b.DEVID=v_devid;
    v_convolume:=v_convolume+v_usecnumber*v_volume;
    v_outvolume:=v_outvolume+v_confnumber*v_volume;
    update SYSDC set CONVOLUME=v_convolume,OUTVOLUME=v_outvolume where SYSID=v_sysid;
    else
    v_eeid:=:old.EEID;
    select VOLUME into v_volume from DEVMODULE where PARENTID=v_eeid; v_oldconfnumber:=:old.CONFNUMBER;
    v_oldusecnumber:=:old.USECNUMBER; select VOLUME into v_devvolume from DEVICECOM where DEVID=v_devid;
    v_devvolume:=v_devvolume+(v_confnumber-v_oldconfnumber)*v_volume;
    update DEVICECOM set VOLUME=v_devvolume where DEVID=v_devid; select a.SYSID,a.CONVOLUME,a.OUTVOLUME into v_sysid,v_convolume,v_outvolume from SYSDC a,DEVICECOM b
    where a.SYSID=b.PARENTID and b.DEVID=v_devid;
    v_convolume:=v_convolume+(v_usecnumber-v_oldusecnumber)*v_volume;
    v_outvolume:=v_outvolume+(v_confnumber-v_oldconfnumber)*v_volume;
    update SYSDC set CONVOLUME=v_convolume,OUTVOLUME=v_outvolume where SYSID=v_sysid;
    end if;
    end tr_af_DEVRESOUSE2;这是trigger的全部,这次把它贴全了,请大家帮我看看错在什么地方?
      

  2.   

    trigger编译可以通过,也能安装,就是在数据库执行的时候出错