[ 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;
[ bogdan.kecman @ 25.01.2013. 13:12 ] @
aj ga nazubi lepo i stavi izmedju [ code ] kodova ovo je mnogo tesko gledati
[ bogdan.kecman @ 25.01.2013. 13:19 ] @
evo ga neki autoformater

Code:

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;




koju tacno gresku dobijes?