Blog

Postado em em 1 de abril de 2024

WHILE no SQL – Estrutura de Repetição

Veja como funciona a estrutura de repetição com WHILE no SQL e aprenda como repetir um bloco de código várias vezes.

Caso prefira esse conteúdo no formato de vídeo-aula, assista ao vídeo abaixo ou acesse o nosso canal do YouTube!

WHILE no SQL – Estrutura de Repetição

Na aula de hoje, vamos explorar como funciona a estrutura de repetição com WHILE no SQL. Essa é uma construção comum em diversas linguagens de programação, permitindo repetir um bloco de código várias vezes.

A ideia por trás do uso do WHILE é evitar a repetição desnecessária da escrita do mesmo bloco de código. Com isso, conseguimos manter a execução de parte do código até que a condição verificada seja falsa.

Vamos abordar também como evitar o famoso “loop infinito”, que ocorre quando não configuramos corretamente o WHILE.

Então, acompanhe-me que hoje vou demonstrar como criar uma estrutura de repetição com WHILE no SQL.

Estrutura de Repetição – Lógica

As estruturas de repetição são comuns em diversas linguagens de programação, e também estão presentes no SQL.

Antes de discutirmos a estrutura WHILE no SQL de forma prática, vamos primeiro compreender qual é a lógica por trás de uma estrutura de repetição, utilizando um exemplo do cotidiano.

Por exemplo, a obtenção da carteira de habilitação só pode ser feita quando atingimos 18 anos. Portanto, aqui temos uma lógica de repetição que diz: “Enquanto a pessoa for menor de idade, ela não pode dirigir.” Essa verificação de idade é feita ano após ano, até que a pessoa complete 18 anos e possa dirigir.

Este é um exemplo básico, mas ilustra como uma estrutura de repetição funciona. Ela verifica uma condição e enquanto essa condição não for atingida, continua executando uma determinada ação.

Lógica WHILE no SQL

A lógica do WHILE no SQL é exatamente essa: enquanto uma condição não for atingida, o código continuará executando uma determinada ação.

Para exemplificar essa aplicação, vamos criar um código que execute uma contagem enquanto a condição determinada não for atendida.

Para implementar essa lógica, vamos precisar trabalhar com procedures, que vimos na última aula. Basicamente, uma procedure é um bloco de código completo que pode ser chamado para execução e é definido por delimitadores personalizados.

Vamos criar uma procedure denominada contador que recebe um parâmetro inteiro chamado limite. Dentro dela, teremos a variável inteira i com valor inicial zero que irá nos auxiliar a controlar a contagem dentro do código.

Feito isso, vamos criar nossa estrutura de repetição while. O while sempre será seguido por uma condição e um bloco de código a ser executado enquanto essa condição for verdadeira.

Neste caso, nossa condição será que o valor de i deve ser menor do que o limite definido na procedure. Quando o valor de i for igual ao limite, esse loop será interrompido.

Dentro do loop, vamos exibir o valor de i com o comando select e em seguida iremos redefinir seu valor somando 1. Dessa forma, conforme as repetições forem passando, o valor de i irá aumentar, até o momento em que será igual ao limite definido, encerrando assim o loop.

delimiter $$

create procedure contador(limite int)
begin
    declare i int default 0;

    while i < limite do
        select i;
        set i = i + 1;
    end while;

end $$

delimiter ;

Podemos executar essa procedure e em seguida chamá-la:

call contador(5);

Executando esse código, teremos a exibição dos valores 0, 1, 2, 3 e 4. Isso porque após a quinta iteração, o valor de i passa a ser 5 e o loop é encerrado.

Resultado do loop while
Resultado do loop while

Para que a contagem comece no número 1 e vá até o número 5, precisamos fazer algumas modificações. Vamos iniciar fazendo um drop da procedure criada:

drop procedure contador;

Agora, vamos definir uma nova procedure, iniciando o i com o valor de 1 e alterando a condição de “menor que” para “menor ou igual“. Dessa forma, a condição só deixará de ser atendida quando i for maior do que o limite, e não mais igual.

delimiter $$

create procedure contador(limite int)
begin
    declare i int default 1;
    while i <= limite do
        select i;
        set i = i + 1;
    end while;

end $$

delimiter ;

Chamando essa procedure teremos o contador indo do 1 ao 5:

call contador(5);

Resultado do loop while
Resultado do loop while

Evitando Loop Infinito

Perceba como é importante definir corretamente a condição de acordo com a sua necessidade ou objetivo.

Se não definirmos a condição corretamente, nosso código será executado infinitamente, pois a condição nunca será atendida.

Por exemplo, se não tivéssemos adicionado a linha de código que redefine o valor de i para i + 1, nossa condição nunca seria atendida, pois i nunca se igualaria ao valor de limite, e o código ficaria executando infinitamente, sem nunca encerrar o loop.

Conclusão – WHILE no SQL – Estrutura de Repetição

Na aula de hoje, vimos como funciona a estrutura de repetição WHILE no SQL. Esta é uma estrutura de repetição muito comum, porém fundamental para executar um mesmo bloco de código várias vezes.

Exploramos sua aplicação prática e também discutimos como evitar os loops infinitos em seus códigos.

Agora, você está ciente de quando utilizar a estrutura de repetição com WHILE no SQL e como aplicá-la corretamente para manipular dados.

Hashtag Treinamentos

Para acessar outras publicações de SQL, clique aqui!


Quer aprender mais sobre SQL com um minicurso básico gratuito?