Blog

Postado em em 22 de março de 2024

Estrutura de Repetição com LOOP no SQL

Entenda o que é uma estrutura de repetição com LOOP no SQL. Qual a finalidade e como ela pode ser utilizada para diversas tarefas.

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

Estrutura de Repetição com LOOP no SQL

Na aula de hoje eu vou te explicar o que é uma estrutura de repetição com LOOP no SQL, qual a finalidade dela e como ela pode te ajudar em seus trabalhos.

Vou te mostrar o passo a passo para construir essa estrutura de repetição com LOOP no SQL. Só que nesse processo, nós vamos utilizar uma procedure no SQL.

Então vem comigo, que eu vou te mostrar como usar estruturas de repetição no SQL para agilizar suas tarefas.

O que é Estrutura de Repetição

Toda linguagem de programação possui uma estrutura de repetição. Essas estruturas são utilizadas para executar repetidamente um bloco de códigos até que uma determinada condição específica seja atendida.

Um exemplo muito clássico é o contador que executa uma determinada ação até atingir um valor final.

Nós vamos criar um exemplo ao longo dessa aula que é uma procedure que executa a contagem até chegar no valor de interesse.

A procedure é um bloco de código ao qual atribuímos um nome e que pode ser chamado para execução sempre que necessário.

Ajustando o Delimitador da Procedure

Para criamos e executarmos a nossa procedure o primeiro passo será alterar o delimitador, para que nosso SQL execute corretamente o bloco de códigos.

Por padrão no SQL utilizamos o ponto e vírgula como delimitador, é ele que identifica onde comando termina.

Como precisaremos trabalhar com um bloco de código dentro da procedure, com diversos comandos sendo executados de uma vez. Precisamos ajustar o delimitador para que o SQL não entenda que a cada ponto e vírgula o comando foi finalizado.

Podemos definir um novo delimitador através da instrução:

delimiter $$

E finalizar o uso desse delimitador com o comando:

end $$
delimiter ;

Dessa forma estamos finalizando o uso do $$ como delimitador e definindo o ponto e vírgula novamente como delimitador padrão.

Procedure no SQL

Com o delimitador definido, podemos declarar nossa procedure dentro dele. Vamos chama-la de contador e ela receberá um parâmetro chamado limite que será um valor do tipo int (número inteiro). É o limite que definirá quando o contador deve parar de contar.

Vamos definir o início da procedure através da palavra-chave begin e dentro dela construir a lógica do nosso contador.

Como o objetivo é o programa contar até atingir o valor limite informado. Vamos declarar uma variável i do tipo inteiro, e inicializá-la com o valor padrão (default) de 0. É essa variável que controlará quantas iterações nosso loop já realizou.

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

end $$
delimiter ;

Em seguida vamos iniciar o loop e nomeá-lo de exemplo, você pode utilizar o nome que preferir. Esse nome será o rótulo do nosso loop que utilizaremos no momento de sair do processo de repetição.

Esse processo consistirá de: a cada iteração, a variável i terá seu valor incrementado em 1. Para declarar esse cálculo utilizaremos o comando set e em seguida usaremos o select para exibir o valor atual da variável i após esse incremento.

delimiter $$

create procedure contador(limite int)
begin
    declare i int default 0;
    exemplo: loop
        set i = i+1;
        select i;

end $$
delimiter ;

Agora precisamos definir a lógica que dirá para o nosso SQL o momento de parar esse contador, encerrar o nosso loop.

Para isso, utilizaremos da estrutura condicional if. Com ela podemos verificar se o valor de i já atingiu o valor definido para o parâmetro limite.

De modo que, se i for igual ao limite, sairemos do loop com a instrução leave. Encerraremos o if e em seguida encerraremos o loop.

delimiter $$

create procedure contador(limite int)
begin
    declare i int default 0;
    exemplo: loop
        set i = i+1;
        select i;

        if i = limite then
            leave exemplo
        end if;

    end loop exemplo;

end $$
delimiter ;

Com isso nossa procedure estará pronta. Basta executá-la e após isso adicionar uma chamada para ela passando o valor limite até o qual desejamos contar.

Para chamar uma procedure basta utilizar a instrução call seguida do nome da procedure passando como argumento para ela o valor desejado para o parâmetro limite.

delimiter $$

create procedure contador(limite int)
begin
    declare i int default 0;
    exemplo: loop
        set i = i+1;
        select i;

        if i = limite then
            leave exemplo
        end if;

    end loop exemplo;

end $$
delimiter ;

call contador(10);

Resultado contador

Cada um desses resultados exibidos equivale a um número, iniciando em 1 e finalizando em 10.

Exibindo os Resultados de Forma Contínua

O nosso contador anterior funcionou corretamente como você pode ver, porém ele abriu uma janela de resultado para cada número contado.

Podemos melhorar essa visualização apresentando os valores de forma contínua em uma única saída.

Para isso vamos substituir o select que exibia o valor da variável i logo após o seu incremento, por uma variável de texto que a cada iteração irá concatenar o valor atual da variável i com o conteúdo da variável texto separando-os por vírgula.

Como utilizaremos uma nova variável de texto, precisaremos declará-la também logo abaixo da variável i. Esta variável terá o comprimento máximo de 100 caracteres, um bom valor para o nosso exemplo.

Ao final, após finalizar o loop, vamos adicionar o comando select texto para exibir o valor final da variável texto que será uma sequência numérica dividida por vírgulas.

delimiter $$

create procedure contador_impressionador(limite int)
begin
    declare i int default 0;
    declare texto varchar(100);
    exemplo: loop
        set i = i+1;
        set texto = concat_ws(",", texto, i);

        if i = limite then
            leave exemplo
        end if;

    end loop exemplo;

    select texto;

end $$
delimiter ;

call contador_impressionador(3);

Nosso contador impressionador basicamente fará o mesmo que o anterior, com a diferença que, ao invés de criar um resultado para cada número, ele irá gerar uma sequência de números concatenados separados por vírgula, de acordo com o limite especificado.

Executando nosso código teremos o seguinte resultado:

resultado contador impressionador

Como definimos a nossa variável de texto com 100 caracteres, isso significa que, se tentarmos contar até um valor que exceda esse número, receberemos um erro. Você pode aumentar esse valor para resolver essa questão.

Conclusão – Estrutura de Repetição com LOOP no SQL

Na aula de hoje eu te expliquei o que é uma estrutura de repetição com LOOP no SQL e demonstrei com um exemplo prático como utilizá-la para construir um contador impressionador no SQL.

Hashtag Treinamentos

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


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

Quer sair do zero no Python e virar uma referência na sua empresa? Inscreva-se agora mesmo no Python Impressionador