Olá galera o/

Na postagem de hoje vou mostrar como podemos utilizar variáveis do tipo tabela no SQL Server ou no Azure SQL Database.

Para quem não sabe, o SQL Server tem um tipo de dado chamado TABLE. Esse tipo é usado normalmente para armazenar temporariamente resultado de consultas. Mais informações sobre no site da Microsoft >> LINK <<

Variáveis do tipo tabela não são soluções completas, apesar de serem rápidas e estarem sendo compiladas em memoria. Essas tabelas EXISTEM SOMENTE NO CONTEXTO DA EXECUÇÃO DA CONSULTA.

Seus benefícios são limitados pela maneira como são usadas e pela
quantidade de dados que eles contêm.

  • Vantagens
    • Muito rápidas
    • São descartadas da memoria automaticamente após o comando ser finalizado ou fecharmos a seção corrente
  • desvantagens
    • Pode afetar significantemente o desempenho de armazenar mais de 100 registros.
    • Não são suportadas nos otimizadores de consulta com base em custo de recursos.

Sintaxe:

DECLARE @variable_name TABLE
(
column_01 int,
column_02 varchar(20),
...
)

INSERT INTO @variable_name VALUES
SELECT * FROM @variable_name

Obs.: É necessário executar o código SQL inteiro para que os dados sejam retornados, pois a variável é um objeto temporário e precisa estar com sua estrutura declarada.

Agora que aprendemos um pouco sobre as variáveis do tipo tabela e vimos como é sua sintaxe, vamos a um exemplo prático e bem simples de se entender.

Vamos criar uma variável do tipo tabela chamada @tb_car. Esta tabela conterá 6 colunas. Iremos inserir 7 registros nesta variável e depois vamos realizar executar o código todo junto para ver o funcionamento da variável tipo tabela.

  • Colunas
    • car_code smallint identity
    • car_model varchar (20)
    • car_color varchar (20)
    • car_year smallint
    • car_maker varchar(30)
    • car_price smallmoney

Vamos executar 4 consultas no total.

  1. Retornar todos os registros da variável tipo tabela
  2. Carros com preço entre 35000 e 55000
  3. Carros com Ano maior que 2020
  4. Carros com a montadora começando com a letra C.

Código fonte.

DECLARE @TB_CAR TABLE (
car_code smallint identity,
car_model varchar (20),
car_color varchar (20),
car_year smallint,
car_maker varchar(30),
car_price smallmoney
)

INSERT INTO @TB_CAR (car_model ,car_color, car_year, car_maker,car_price)
values ('Onix Plus', 'Gray', 2020,'Chevrolet', 53500.00),
		('Argo', 'Gray', 2019,'Fiat', 53990.00),
		('Cruze', 'Black', 2019,'Chevrolet', 105000.290),
		('T-Cross', 'Red', 2020,'Volkswagen', 69990.00),
		('Virtus', 'Gray', 2020,'Volkswagen', 68490.00),
		('Gol G5', 'White', 2018,'Volkswagen', 35000.00),
		('Mobi', 'White', 2019,'Fiat', 37390.00)

SELECT * FROM @TB_CAR

SELECT * FROM @TB_CAR
WHERE car_price BETWEEN 35000 AND 55000

SELECT * FROM @TB_CAR
WHERE car_year >= 2020

SELECT * FROM @TB_CAR
WHERE car_maker like 'c%'

Se você tentar executar o INSERT ou os SELECTs sem executar o código todo o seguinte erro será apresentado: Must declare the table variable “@TB_CAR”, ou seja, a variável não foi declarada.

Ao executarmos o código todo junto com o botão EXECUTE ou F5, os resultados são exibidos conforme mostrado na imagem abaixo.

Este é o processo sendo realizado em uma animação no formato GIF. Executei a query em questão clicando no botão F5 do meu teclado, por este motivo o código não foi selecionado e executado através do botão EXECUTE.

Espero que tenham gostado da postagem sobre como utilizar variáveis do tipo tabela. Particularmente utilizo muito quando quero fazer algum teste de lógica rápido ou quando estou dando treinamento para mostrar de forma prática algumas cláusulas do SQL e como podemos obter o mesmo resultado utilizando cláusulas diferentes.

Para quem quer estudar:

  • Para a Certificação Microsoft MTA Database Fundamentals
    • Segue o link do curso na Udemy. >> LINK <<
  • Sobre Bancos da Dados no Azure
    • Segue o link do curso na Udemy. >> LINK <<

Não se esqueçam de avaliar esta postagem através da ESTRELAS abaixo das redes sociais, isso vai me ajudar muito a melhorar as postagens.

Quem quiser mandar comentários, sugestões, criticas e complementos, fiquem a vontade, pois feedbacks positivos ou negativos engradecem meu conhecimento para que possa melhorar as postagem para vocês.

Até a próxima o/

Acessem nossas Redes Sociais:

Publicidade