przysiadłem w końcu, aby na poważniej pouczyć się SQL'a i niestety za bardzo nie potrafię zrozumieć instancji jego działania - a manual jest strasznie nieczytelny (albo nie potrafię szukać - też taka możliwość może być);
Otóż mam taki problem, iż próbuje sobie napisać funkcję, która po podaniu id_filmu pobierze wszystkie do niego przypisane gatunki i wyświetli po przecinku
Model prezentuje się następująco:

A oto procedura, którą stworzyłem:
DELIMITER $$ DROP FUNCTION IF EXISTS `dupa` $$ CREATE DEFINER=`root`@`localhost` FUNCTION `dupa`(`idfilm` INT) RETURNS varchar(255) CHARSET latin1 READS SQL DATA BEGIN DECLARE ile INT; DECLARE str VARCHAR(255); DECLARE zapytanie VARCHAR(255); DECLARE licznik INT; DECLARE licznik_dod INT; SET licznik = 0; SET licznik_dod = 0; SET ile = (SELECT count(*) FROM gatunki, film_gatunki WHERE film_gatunki.id_film = idfilm AND film_gatunki.id_gatunek = gatunki.id_gatunek); WHILE ile > licznik DO SET licznik_dod = licznik_dod +1; SET zapytanie = (SELECT gatunki.nazwa_gatunku INTO zapytanie FROM gatunki, film_gatunki WHERE film_gatunki.id_film =idfilm AND film_gatunki.id_gatunek = gatunki.id_gatunek LIMIT licznik,licznik_dod); SET str = str & ', ' % zapytanie; SET licznik = licznik + 1; END WHILE; RETURN str; END $$ DELIMITER ;
Procedurę wykonuje, tylko że wyrzuca NULL. Zmienna ile dostaje poprawna wartość.
Coś mi się wydaje, że zupełnie źle podchodzę do tego problemu.