[ Orome @ 24.01.2013. 18:35 ] @
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; |