MySQL – Estruturas de Repetição – comando LOOP

MySQL – Estruturas de Repetição – comando LOOP

Blocos iterativos

Um bloco iterativo é um bloco de código que é executado repetidamente por um comando especial até que uma condição de parada o interrompa.

Um bloco iterativo pode ser aninhado com outros blocos iterativos.

O MySQL possui três tipos básicos de blocos iterativos:

  • LOOP
  • REPEAT
  • WHILE

Nesta lição estudaremos especificamente o comando LOOP

Comando LOOP

Sintaxe:

[<rótulo>:] LOOP
declarações
END LOOP [<rótulo>];

Exemplo do comando LOOP

DELIMITER //
CREATE PROCEDURE acumula (limite INT)
BEGIN
DECLARE contador INT DEFAULT 0;
DECLARE soma INT DEFAULT 0;
loop_teste: LOOP
    SET contador = contador + 1;
    SET soma = soma + contador;
    IF contador >= limite THEN
        LEAVE loop_teste;
    END IF;
END LOOP loop_teste;
SELECT soma;
END//
DELIMITER ;

-- Testando
CALL acumula(10);

O vídeo a seguir detalha o comando loop e explica o exemplo do código anterior:

Sobre Fábio dos Reis (1195 Artigos)
Fábio dos Reis trabalha com tecnologias variadas há mais de 30 anos, tendo atuado nos campos de Eletrônica, Telecomunicações, Programação de Computadores e Redes de Dados. É um entusiasta de Ciência e Tecnologia em geral, adora Viagens e Música, e estuda idiomas, além de ministrar cursos e palestras sobre diversas tecnologias em São Paulo e outras cidades do Brasil.

3 Comentários em MySQL – Estruturas de Repetição – comando LOOP

  1. Não funcionou.
    Deveria ser algo mais do tipo execute e funcione.
    Deu um monte de erro.

    • Tiago Fioravanti // 17/04/2019 em 17:13 // Responder

      Opa.
      Digite exatamente como está lá descrito cuidando digitar end// e não end //
      Eu testei a diferença no meu e funcionou corretamente com end// junto.
      Usar enter ao longo do texto me ajudou a achar com mais facilidade o problema pois usei várias linhas e fui na linha certa do problema.

      ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘loop_teste;
      select soma;
      end’ at line 11

      Pude ver que o erro estava na linha 11, próximo do comando end.

  2. Tiago Fioravanti // 17/04/2019 em 17:07 // Responder

    Precisa ser exatamente como digitado, pois end// e end // dão resultados diferentes. O correto que funcionou aqui foi o end//
    Use várias linhas para que o erro seja notificado mostrando a linha do erro. Isso me ajudou.
    Por alguma razão meu end// finaliza a rotina antes de eu digitar o final delimiter; então digito as duas últimas numa só antes de dar enter, ficando: end// delimiter;

Escreva um comentário

Seu e-mail não será divulgado


*