Il cursore non funziona correttamente
Salve a tutti. Ho un altro strano problema. Ho una stored con un cursore dichiarato così:
DECLARE CONTINUE HANDLER FOR NOT FOUND SET finished = 1;
CREATE TEMPORARY TABLE NewsTable (ID INT, Immagine NVARCHAR(255), Titolo LONGTEXT);
BEGIN
DECLARE NewsCursor CURSOR FOR SELECT news.ID, news.Immagine, news.Titolo, news.Sottotitolo, news.Body FROM news;
OPEN NewsCursor;
NEWSLOOP: LOOP
FETCH NewsCursor INTO id, immagine, titolo, sottotitolo, body;
IF finished = 1 THEN
LEAVE NEWSLOOP;
END IF;
INSERT INTO NewsTable (ID, Immagine, Titolo) SELECT id AS ID, immagine AS IMMAGINE, titolo AS TITOLO;
INSERT INTO NewsTable (ID, Immagine, Titolo) SELECT 0 AS ID, '' AS IMMAGINE, sottotitolo AS TITOLO;
INSERT INTO NewsTable (ID, Immagine, Titolo) SELECT 0 AS ID, '' AS IMMAGINE, body AS TITOLO;
END LOOP;
CLOSE NewsCursor;
END;
SELECT ID, Immagine, Titolo FROM NewsTable;
Viene fuori il numero di record corretto (18 righe), ma ogni record è uguale all'altro, con i dati dell'ultimo record della tabella a cui punta il cursore (news).
Cosa sbaglio? Perché il FETCH tira fuori solo i dati dell'ultimo record di "news"?