编译可以通过,就是在数据库操作的时候,提示在19行出错,也就是if inserting then 语句下的第一条select语句的位置,我把整个trigger 都贴出来,请帮我看看
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;