1
resposta

[Sugestão] Exercício deveria ter mais uma parte

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

1 resposta

Oii, Matheus! Como você está?

Agradeço por interagir no fórum compartilhando sua sugestão conosco. É muito legal acompanhar o desenvolvimento de vocês e a busca por sempre incrementar as atividades. Inclusive, recomendo que replique o seu feedback na pesquisa disponibilizada no final do curso, para que a equipe responsável também tenha acesso.

Com certeza nos ajudará na aplicação de futuras melhorias e no aprendizados das pessoas que estão estudando.

Continue se dedicando e qualquer dúvida, conte conosco.

Bons estudos, Matheus!