Introdução aos loops do SQL Server

Introdução aos loops do SQL Server

Introdução aos loops do SQL Server 1
cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br


Os loops são um dos conceitos mais básicos e ainda muito poderosos da programação – o mesmo significa loops do SQL Server. Hoje, forneceremos uma breve informação sobre como eles funcionam e apresentaremos conceitos mais complexos nos próximos artigos desta série.

Introdução

Não usaremos nenhum modelo de dados neste artigo. Embora isso possa parecer estranho (bem, estamos trabalhando com um banco de dados e não há dados !?), você entendeu. Como este é o artigo de introdução sobre os loops do SQL Server, abordaremos conceitos básicos que você pode combinar com os dados para obter o resultado desejado.

Mas, antes de tudo, vamos ver o que são os loops. Loops são o conceito de programação que nos permite escrever algumas linhas de código e repeti-las até que a condição do loop seja mantida.

Quase todas as linguagens de programação as implementam e geralmente encontramos esses três tipos de loops:

  • ENQUANTO – Enquanto a condição do loop for verdadeira, executaremos o código dentro desse loop

  • DO… WHILE – Funciona da mesma maneira que o loop WHILE, mas a condição do loop é testada no final do loop. ENQUANTO os loops e FAZEM… Enquanto os loops são muito semelhantes e podem simular-se facilmente. REPEAT… ATÉ (Pascal) é semelhante ao DO… WHILE e o loop deve repetir até que “alcancemos” essa condição

  • FOR – Por definição, esse loop deve ser usado para executar o código dentro do loop pelo número de vezes que você saberá exatamente antes do início do loop. Isso é verdade na maioria dos casos, e esse loop (se disponível) deve ser usado dessa maneira (para evitar código complicado), mas ainda assim, você pode alterar o número de vezes que é executado dentro do loop

Para nós, os fatos mais importantes são:

  • O SQL Server implementa o loop WHILE, permitindo repetir um determinado código enquanto a condição do loop é mantida

  • Se, por qualquer motivo, precisarmos de outros loops, podemos simulá-los usando um loop WHILE. Mostraremos isso mais adiante neste artigo

  • Os loops raramente são usados ​​e as consultas fazem a maior parte do trabalho. Ainda assim, às vezes, os loops provam ser muito úteis e podem facilitar muito a nossa vida

  • Você não deve usar loops para o que quiser. Eles podem causar sérios problemas de desempenho. Portanto, saiba o que está fazendo

IF… ELSE IF e PRINT

Antes de passarmos para os loops, apresentaremos duas instruções / comandos SQL – IF (IF … ELSE) e PRINT.

A instrução IF é bem simples, logo após a palavra-chave IF, você coloca a condição. Se essa condição avaliar, o bloco de instruções será executado. Se não houver mais nada, é isso.

Você também pode adicionar ELSE à instrução SE e isso resultará no seguinte: se a condição original não for verdadeira, o código na parte ELSE deverá ser executado.

Se quisermos testar várias condições, usaremos IF (1st condição)… ELSE SE (2nd condição)… ELSE SE (n-ésima condição)… ELSE. Faremos exatamente isso em nosso exemplo – apenas para mostrar como ele funciona no SQL Server.

Mas antes disso – o comando PRINT. PRINT simplesmente imprime o texto colocado após esse comando. Isso está entre aspas, mas você também pode concatenar seqüências de caracteres e usar variáveis.

Loops do SQL Server - IF, ELSE IF e PRINT

Com o conjunto de comandos acima, temos:

  • Declarou duas variáveis ​​e atribuiu valores a elas

  • Utilizou a instrução IF… ELSE IF para testar qual variável é maior

Embora este exemplo seja bastante simples (e é óbvio qual número é maior), é uma maneira simples e agradável de demonstrar como o IF… ELSE IF e PRINT funcionam no SQL Server.

Agora, usaremos as instruções do exemplo anterior para mostrar mais uma coisa.

Loops do SQL Server - IF aninhado

Você pode perceber que colocamos a instrução IF dentro de outra instrução IF. Isso é chamado IF aninhado. Você pode evitá-lo usando operadores lógicos no 1st IF, mas dessa maneira, o código é mais legível).

O objetivo do nosso código é comparar dois números e também imprimir se o primeiro for maior que 75, maior que 50 ou menor ou igual a 50 (e somente no caso se o primeiro número for maior que o segundo número).

De maneira semelhante ao exemplo anterior, esse código não é muito “inteligente”, mas é usado para mostrar o conceito de IF aninhado.

Loops do SQL Server

Agora estamos prontos para mudar para os loops do SQL Server. Temos um loop à nossa disposição, e esse é o loop WHILE. Você pode pensar por que não temos outros também, e a resposta é que o loop WHILE fará o trabalho. Primeiro, veremos sua sintaxe.

Enquanto {condição mantém}
INÍCIO
{…faça alguma coisa…}
FIM;

Como você pode concluir facilmente – enquanto as condições do loop forem verdadeiras, executaremos todas as instruções no INÍCIO FIM quadra. Como estamos falando de loops do SQL Server, temos todas as instruções SQL à nossa disposição e podemos usá-las no loop WHILE como quisermos.

Vamos agora dar uma olhada no primeiro exemplo do loop WHILE.

Simulando o loop FOR usando o loop WHILE no SQL Server

Declaramos a variável @i e a definimos como 1. Se o valor atual da variável for <= 10, inseriremos o corpo do loop e executaremos as instruções. Cada vez que entramos no corpo, aumentamos @i em 1. Dessa forma, o valor da variável @i se tornará 10 em algum momento e isso impedirá que o loop seja executado repetidamente.

Poucas coisas são importantes para mencionar aqui:

  • A variável @i conta quantas vezes estivemos no loop e, às vezes, a palavra “contador” deve ser usada para essa variável. Nomear o contador @i também é uma boa prática

  • Como sabemos que esse loop sempre deve ser executado exatamente 10 vezes – @i começa em 1, aumenta 1 e repetiremos até que @i se torne 11 – essa também é a simulação do loop FOR usando o loop WHILE

  • É sempre importante ter certeza de que a condição do loop nem sempre será verdadeira. Se a condição do loop sempre se mantiver, o loop será infinito e, na maioria dos casos, não queremos isso (especialmente no banco de dados)

  • Sugestão: Loops infinitos raramente são usados ​​na programação. Um desses casos é quando queremos esperar que um sinal (algo) aconteça. Vamos esperar usando o loop que nunca termina. Embora isso seja muito útil na programação, usar esse loop em bancos de dados não seria uma jogada inteligente (impactaremos o desempenho, e o objetivo principal dos bancos de dados é extrair dados o mais rápido possível).

Duas palavras-chave – QUEBRAR e CONTINUAR, estão presentes na maioria das linguagens de programação. O mesmo significa loops do SQL Server. A ideia é a seguinte:

  • Quando você encontra o QUEBRAR palavra-chave no loop, você simplesmente desconsidera todas as instruções até o final do loop (não executa nenhuma) e sai do loop (não passa para a próxima etapa, mesmo que a condição do loop seja mantida)

  • o CONTINUAR age semelhante a QUEBRAR – desconsidera todas as instruções até o final do loop, mas continua com o loop

Comando BREAK dentro do loop WHILE do SQL Server

Você pode notar que colocar um QUEBRAR no loop resultou que saímos do loop no 9º passar.

Loops do SQL Server - comando CONTINUE dentro do loop WHILE do SQL Server

O código acima resulta em um loop infinito. A razão para isso é que, quando @i se tornar 9, CONTINUARemos o loop e @i nunca terá o valor 10. Como esse é um loop infinito, ele gastará apenas recursos no servidor sem fazer nada. Podemos encerrar a consulta clicando no botão “parar”.

Comando CONTINUE dentro do loop WHILE do SQL Server

Depois de clicar no botão Parar, você pode notar que o loop fez alguma coisa, imprimiu os números 1 a 8 e número 9 tantas vezes quanto aconteceu antes de cancelarmos a consulta.

Loops e datas do SQL Server

Até o momento, abordamos o básico e como os loops do SQL Server funcionam e como combinamos instruções como IF e PRINT com loops. Agora, usaremos loops para fazer algo útil. Queremos imprimir todas as datas entre as duas datas especificadas.

Loops do SQL Server - imprimindo datas no intervalo usando o loop WHILE do SQL Server

Declaramos duas variáveis, atribuímos valores de data a elas. A única diferença é que estamos usando a variável @loop_date. Embora possamos fazer isso sem essa variável, é uma boa prática manter os valores originais (no nosso caso, esses são @date_start e @date_end) inalterados. Em cada etapa do ciclo, imprimimos a data e aumentamos o “contador” em 1 dia. Isso é útil, mas ainda não podemos usar essas datas na consulta.

Para fazer isso, armazenaremos valores na tabela temporária.

Loops do SQL Server - INSERTing na tabela temporária

Eliminamos as tabelas temporárias #dates (se existir). Depois disso, criamos uma tabela temporária. O código usado é quase o mesmo que no exemplo anterior. A diferença é que, em vez de usar o comando PRINT, em cada etapa do loop, inserimos 1 linha na tabela temporária.

Após o loop, também selecionamos da tabela temporária a eliminamos.

Conclusão

Os loops do SQL Server são extremamente poderosos se você usá-los como eles deveriam ser usados. Hoje, nós apenas arranhamos a superfície, mas conceitos importantes foram explicados. No próximo artigo, mostraremos exemplos mais complexos e combinaremos loops com outros objetos de banco de dados.

Índice

Emil Drkusic
Últimas mensagens de Emil Drkusic (ver todos)

cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br
Leia Também  Importar dados de vários arquivos do Excel para tabelas do SQL Server usando um pacote SSIS