É Pá e Bola com o SQL Server – ③

Sessão É Pá e Bola com o SQL Server, dicas rápidas, simples e práticas, sem se preocupar com formalidades….

Olá, boa noite….

Este é mais um post da nova Sessão É Pá e Bola com SQL Server.

Aqui o papo vai ser simples e direto, sem formalidade, com dicas rápidas para se fazer algo relacionado com Microsoft SQL Server de forma geral.

Você pode estar se perguntando o porque deste nome, eu já te respondo.

O porque é que todas as dicas a serem compartilhadas estão envolvidas com esportes praticados com bola, mas certamente outras modalidades terão seu devido destaque.

Image result for bolas

No É Pá e Bola com o SQL Server -③, vamos aprender a Declarar e consumir uma CTE (Common Table Expression) no Microsoft SQL Server, um dos recursos mais inovadores que eu já utilizei, introduzido a partir da versão 2005.

Podemos pensar em uma expressão de tabela comum (CTE) como sendo um conjunto de resultados temporários definidos no escopo de execução de uma única instrução SELECT, INSERT, UPDATE, DELETE ou CREATE VIEW.

Uma CTE é semelhante a uma tabela derivada que não é armazenada como um objeto e permanece apenas durante a execução de uma consulta. Ao contrário de uma tabela derivada, uma CTE pode ser auto referenciada e pode ser referenciada várias vezes na mesma consulta.

Basicamente a estrutura de uma CTE é composta por três elementos: Cabeçalho, Código fonte e Comando Select de execução.

A seguir apresento dois exemplos de declaração e uso de CTEs:

— Exemplo 1 – CTEClubes–
— Exemplo 1 – Bloco de Código —
;With CTEClubes — Cabeçalho da CTE, composto pelo comando ;With, nome da CTE e nome colunas (opcional) —
As
(Select * From (Values (‘A’),(‘B’),(‘C’),(‘D’),(‘E’),(‘F’),(‘G’),(‘H’),(‘I’),(‘J’),(‘K’),
(‘L’),(‘M’),(‘N’),(‘O’),(‘P’),(‘Q’),(‘R’),(‘S’),(‘T’),(‘U’),(‘V’),
(‘W’),(‘X’),(‘Y’),(‘Z’)) As Alfabeto (NomeDoClube)
)
— Comando Select de Execução —
Select NomeDoClube From CTEClubes
Go

— Exemplo 2 – CTENumeracao —

— Exemplo 2 – Bloco de Código —
;With CTENumeracao (Numeros)
As
(Select 1 As Numeros
Union All
Select Numeros + 1 From CTENumeracao
Where Numeros <100
)
Select Numeros From CTENumeracao
Go

Note a CTENumeracao é reconhecida pelo Microsoft SQL Server, como recursiva, pois em seu código fonte se estabelece em conjunto com o comando Union All a declaração do seu próprio nome.

Através desta abordagem temos a possibilidade de se estabelecer um processo de execução em loop para o comando Select que esta declarado logo após o comando Union All.

Desta forma, tornas-se aplicável combinar todos os membros ou blocos Selects declarados deste o primeiro até o último, o que nos permite dizer que esta sendo empregada durante a execução desta CTE a recursividade de seu código.

Através do uso deste recurso, inúmeras possibilidades podem ser aplicadas, destaco algumas que já implementei:

      • Cálculo do fatorial de um número;
      • Declaração de números pares ou ímpares;
      • Definição de níveis hierárquivos de cargos;
      • Geração de sequências numéricas ou valores combinados;
      • Geração de parcelamento de valores;
      • Geração de combinações de letras e números para geração de placas de carros; entre outras.

Em suma, existem várias práticas que podemos fazer uso deste recurso.


É isso aí galera, aqui é É Pá e Bola com o SQL Server, espero que você tenha gostado….

Valeu….

Autor: Junior Galvão - MVP

Profissional com vasta experiência na área de Tecnologia da Informação e soluções Microsoft. Pós-Graduado no Curso de Gestão e Engenharia de Processos para Desenvolvimento de Software com RUP na Faculdade FIAP – Faculdade de Informática e Administração Paulista de São Paulo. Graduado no Curso Superior em Gestão da Tecnologia de Sistemas de Informação pela Uninove – Campus São Roque. Formação MCDBA Microsoft, autor de artigos acadêmicos e profissionais postados em Revistas, Instituições de Ensino e WebSistes. Meu primeiro contato com tecnologia ocorreu em 1994 após meus pais comprarem nosso primeiro computador, ano em que as portas para este fantástico mundo se abriram. Neste mesmo ano, comecei o de Processamento de Dados, naquele momento a palavra TI não existia, na verdade a Tecnologia da Informação era conhecida como Computação ou Informática, foi assim que tudo começou e desde então não parei mais, continuando nesta longa estrada até hoje. Desde 2001 tenho atuado como Database Administrator – Administrador de Banco de Dados – SQL Server em tarefas de Administração, Gerenciamento, Migração de Servidores e Bancos de Dados, Estratégias de Backup/Restauração, Replicação, LogShipping, Implantação de ERPs que utilizam bancos SQL Server, Desenvolvimento de Funções, Stored Procedure, entre outros recursos. Desde 2008 exerço a função de Professor Universitário, para as disciplinas de Banco de Dados, Administração, Modelagem de Banco de Dados, Programação em Banco de Dados, Sistemas Operacionais, Análise e Projetos de Sistemas, entre outras. Experiência na Coordenação de Projetos de Alta Disponibilidade de Dados, utilizando Database Mirroring, Replicação Transacional e Merge, Log Shipping, etc. Trabalhei entre 2011 e 2017 como Administrador de Banco de Dados e Coordenador de TI no FIT – Instituto de Tecnologia da Flextronics, atualmente exerço a função de Professor Universitário na FATEC São Roque. CTO da Galvão Tecnologia, consultoria especializada em Gestão de TI, Administração de Servidores Windows Server, Bancos de Dados Microsoft SQL Server e Virtualização. Possuo titulação Oficial Microsoft MVP e reconhecimentos: MCC, MSTC, MIE e MTAC.