Boa noite.
Neste exercício é pedido que modifiquemos a stored procedure looping_cursor_54, porém, seria também ideal fazer a modificação na stored procedure inclui_usuarios_lista_52 e no tabela temporária temp_nomes, para então ter realmente um desafio que interliga o que foi mostrado nessa quinta parte do curso. De qualquer forma, foi o que eu entendi que deveria fazer. Segue as modificações
stored procedure 'incui_usuarios_lista_52_novo'
CREATE DEFINER=`root`@`localhost` PROCEDURE `inclui_usuarios_lista_52_novo`(
lista VARCHAR(255),
listaemail VARCHAR(255)
)
BEGIN
DECLARE nome VARCHAR(255);
DECLARE nRestante VARCHAR(255);
DECLARE nPos INTEGER;
DECLARE email VARCHAR(255);
DECLARE eRestante VARCHAR(255);
DECLARE ePos INTEGER;
SET nRestante = lista;
SET eRestante = listaemail;
WHILE INSTR(nRestante, ',') > 0 AND INSTR(eRestante, ',') > 0 DO
SET nPos = INSTR(nRestante, ',');
SET nome = LEFT(nRestante, nPos - 1);
SET nRestante = SUBSTRING(nRestante, nPos+1);
SET ePos = INSTR(eRestante, ',');
SET email = LEFT(eRestante, ePos - 1);
SET eRestante = SUBSTRING(eRestante, ePos+1);
INSERT INTO temp_nomes_novo (nome, email) VALUES (nome, email);
END WHILE;
IF TRIM(nRestante) <> '' AND TRIM(eRestante) <> '' THEN
INSERT INTO temp_nomes_novo (nome, email) VALUES (TRIM(nRestante), TRIM(eRestante));
END IF;
END
stored procedure 'looping_cursor_54_novo'
CREATE DEFINER=`root`@`localhost` PROCEDURE `looping_cursor_54_novo`()
BEGIN
DECLARE fimCursor INTEGER DEFAULT 0;
DECLARE vNome VARCHAR(255);
DECLARE vEmail VARCHAR(255);
DECLARE cursor1 CURSOR FOR SELECT nome, email FROM temp_nomes_novo;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET fimCursor = 1;
OPEN cursor1;
FETCH cursor1 INTO vNome, vEmail;
WHILE fimCursor = 0 DO
SELECT vNome, vEmail;
FETCH cursor1 INTO vNome, vEmail;
END WHILE;
CLOSE cursor1;
END
e então, a consulta com a tabela temporária foi
DROP TEMPORARY TABLE IF EXISTS temp_nomes_novo;
CREATE TEMPORARY TABLE temp_nomes_novo(
nome VARCHAR(255),
email VARCHAR(255)
);
CALL inclui_usuarios_lista_52_novo('João,Pedro,Maria,Lucia,Joana,Beatriz',
'teste@email.com,teste2@email.com,teste3@email.com,teste4@email.com,teste5@email.com,teste6@email.com');
SELECT * FROM temp_nomes_novo;
CALL looping_cursor_54_novo();
Obrigado pela atenção e... Adeeeus