sta nije u redu sa sintaksom odnosno postavkom ovog koda, ukoliko neko primeti nesto nelogicno od ljudi koji se cesto susrecu sa ovim neka govori :)
koliko mi vidimo nesto je do sintakse i postavke WHILE ali ne mozemo da nadjemo dovoljno detaljan pimer koji bi nam pomogao, uglavnom su svi jako jednostavni...
hvala unaped evo koda :
create triger ... ostalo
for each row BEGIN
declare reccount bigint(1);
declare var_sifrap bigint(3);
declare var_ulaz bigint(1);
declare var_izlaz bigint(1);
declare var_kol_umanjenje decimal(12,3);
declare var_kol_lok_rok decimal(12,3);
declare var_kol_ostatak decimal(12,3);
declare var_lokacija char(30);
declare var_rok_trajanja date default (0000-00-00);
declare var_ispada bigint(1);
declare c_r_lager_lok_rok cursor for select sifrap from r_lager_lok_rok where r_lager_lok_rok.sifrap = new.sifrap and
r_lager_lok_rok.artikl=new.artikl and r_lager_lok_rok.skla=new.skla and
TRIM(r_lager_lok_rok.lokacija)=TRIM(new.lokacija) and
r_lager_lok_rok.rok_trajanja=new.rok_trajanja;
declare c_r_vp cursor for select izlaz,ulaz from r_vp where r_vp.sifra = new.vp;
declare c_r_promet_lok_rok cursor for select * from r_lager_lok_rok where r_lager_lok_rok.sifrap = new.sifrap and
r_lager_lok_rok.artikl=new.artikl and r_lager_lok_rok.skla=new.skla and
r_lager_lok_rok.kolicina>0 order by r_lager_lok_rok.rok_trajanja;
declare continue HANDLER for not found set reccount=0;
open c_r_vp;
fetch c_r_vp into var_izlaz,var_ulaz;
close c_r_vp;
open c_r_lager_lok_rok;
fetch c_r_lager_lok_rok into var_sifrap;
close c_r_lager_lok_rok;
if new.vp<>4 and new.vp<>3 and new.vp<>17 THEN
if new.vp<>2 then
IF reccount=0 then
insert into r_lager_lok_rok
(sifrap,skla,artikl,lokacija,rok_trajanja,kolicina,sis_korisnik)
values
(new.sifrap,new.skla,new.artikl,TRIM(new.lokacija),new.rok_trajanja,
(if(var_izlaz =0,new.kolicina,new.kolicina*(-1))),new.sis_korisnik) ;
else
update r_lager_lok_rok set
r_lager_lok_rok.kolicina = (if(var_izlaz =0,r_lager_lok_rok.kolicina+new.kolicina,r_lager_lok_rok.kolicina-new.kolicina)),
sis_korisnik = new.sis_korisnik
where r_lager_lok_rok.sifrap = new.sifrap and
r_lager_lok_rok.skla=new.skla and r_lager_lok_rok.artikl=new.artikl and
TRIM(r_lager_lok_rok.lokacija)=TRIM(new.lokacija) and r_lager_lok_rok.rok_trajanja=new.rok_trajanja;
END IF;
else
set var_kol_ostatak = new.kolicina;
set var_ispada = 0;
open c_r_promet_lok_rok;
while var_ispada = 0 do
set var_kol_lok_rok=c_r_promet_lok_rok.kolicina;
set var_lokacija=c_r_promet_lok_rok.lokacija;
set var_rok_trajanja=c_r_promet_lok_rok.rok_trajanja;
if var_kol_ostatak > var_kol_lok_rok then
set var_kol_ostatak = var_kol_ostatak - var_kol_lok_rok;
set var_kol_umanjenje = var_kol_lok_rok;
else
set var_kol_umanjenje = var_kol_ostatak;
set var_kol_ostatak = 0;
set var_ispada=1;
end if;
insert into r_promet_lok_rok
(sifrap,skla,vp,prs,dok,rbr,artikl,kolicina,rok_trajanja,lokacija,sis_korisnik)
values
(new.sifrap,new.skla,new.vp,new.prs,new.dok,new.rbr,new.artikl,var_kol_umanjenje,var_rok_trajanja,var_lokacija,new.sis_korisnik);
end while;
close c_r_promet_lok_rok;
END IF;
END IF;
END;