Dostałem stare dane do uzupełnienia w tabeli statystyki u siebie w firmie. Wychodząc ze słusznego założenia, że nie chce mi się wpisywać tego ręcznie (uzupełnienie jednej tabeli na podstawie drugiej) stwierdziłem, ze napiszę do tego procedurę, którą później będę mógł wykonać za pomocą php w pętli.
Procedura wygląda w sposób następujący:
CREATE DEFINER=`root`@`%` PROCEDURE `costam`(IN `data` DATE, IN `szt` INT) LANGUAGE SQL DETERMINISTIC CONTAINS SQL SQL SECURITY INVOKER COMMENT '' BEGIN case szt when szt<=3 then INSERT INTO stat (id_a,DATA,16_00) VALUES (18,@DATA,@szt); when szt>3<=6 AND @szt%3=0 then INSERT INTO stat (id_a,DATA,16_00,17_00) VALUES (18,@DATA,3,@szt); when szt>3<=6 AND @szt%3!=0 then INSERT INTO stat (id_a,DATA,16_00,17_00) VALUES (18,@DATA,3,@szt%3); else begin end; end case; END
We wszystkich przypadkach id_a to to 18, ale jednocześnie do wstawianej tabeli jest konieczność wpisania id_a.
w przypadku wywołania procedury call costam('2011-08-11',4); niestety nic się nie dzieje - tzn. nie wywala żadnego błędu, ale również nie dodaje wierszy w tabeli stat. Dodam, że jeżeli "ręcznie" tylko poprzez pytanie z procedury działa bez problemu. Gdzie w takim razie tkwi błąd?