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的全部,这次把它贴全了,请大家帮我看看错在什么地方?
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的全部,这次把它贴全了,请大家帮我看看错在什么地方?