No post anterior sobre SQL, introduzimos os conceitos de programação com esta linguagem, vimos seus elementos, como criar variáveis e utilizá-las em consultas.

Dando continuidade, neste vamos além, veremos como utilizar as variáveis para criar tabelas temporárias e como elas podem auxiliar e agilizar suas queries diárias.

CRIANDO TABELA TEMPORÁRIA

Criar este tipo de tabela é tão simples quanto uma física bastando acrescentar um símbolo antes do nome.

BATCH DE CRIAÇÃO COM RESULTADO DO INSERT NA TABELA

Sempre que vamos criar uma tabela temporária via CREATE TABLE temos de utilizar o sinal # ou ##. O sinal de hashtag duplo indica que aquela é uma tabela global.

ERRO TABELA TEMPORÁRIA

Esse erro ocorre devido o fato desta tabela não ser do tipo global, que é uma propriedade do duplo ## (hashtag).

Ainda sobre as tabelas variáveis locais, quando criamos, independente da ‘posição’ que ela foi criada, é possível selecioná-la em qualquer momento, desde que esteja na conexão que a criou.

NOVA TABELA DE TESTE

Para deixar claro, primeiro eu criei a tabela e depois inseri. O select só foi executado após e em outra posição, neste caso, antes do bloco de criação.

TABELA GLOBAL

Quando tratamos de tabela temporal global, o conceito lógico é o mesmo só tenha em mente que qualquer um pode alterar a tabela e modificar sua estrutura ou os dados.

TABELA TEMPORAL GLOBAL CRIADA

Agora, mostrarei o exemplo de uma alteração nos dados desta tabela por outra conexão.

ALTERANDO A TABELA POR OUTRA CONEXÃO

Voltando para outra conexão e executando um select nesta tabela.

SELECT APÓS ALTERAÇÕES NA TABELA

Deixo claro que estas tabelas quando criadas, ficam armazenadas no TempDB, que é um banco para objetos temporários que geralmente armazena estes objetos na memória. Cuidado com seu uso.

As tabelas temporárias são eliminadas quando não há uma atividade direta nestas ou quando a conexão que a criou se encerra. Além, é possível executar o drop table #nometabela.

TABELA COMO VARIÁVEL

Outra opção quando trabalhamos com este tipo de tabela é criar uma tabela como se ela fosse uma variável de um comando. O procedimento é basicamente o mesmo, mudando apenas que devemos declarar como tabela.

EXEMPLO DE TABELA VARIÁVEL CRIADA

É importante destacar que por se tratar de uma variável, somente os comandos dentro deste bloco podem selecionar a tabela. Do contrário, irá acusar erro.

Uma forma mais ágil de ‘armazenar’ esse tipo de tabela é criando um Type que seria um objeto de declaração que podemos utilizar em qualquer momento.

UTILIZANDO TEMPLATE PARA TABELA VARIÁVEL

EXEMPLOS

Abaixo, um pequeno relatório criado para os produtos vendidos separados por ano armazenado em uma tabela temporária.

EXEMPLO COM TABELA TEMPORÁRIA

Outro exemplo que pode agilizar seu processo é criar uma tabela temporária para armazenar dados de um banco A para inserir no banco B de forma mais ágil.

INSERT RESUMIDO NA TABELA TEMPORÁRIA

E no próxima imagem, inserindo no bando AdventureWorks os dados que foram inseridos na tabela temporária.

INSERT REALIZADO

RESUMO

Neste post vimos recursos de como criar tabelas temporárias e variáveis que podem armazenar resultados de consultas ou servir para apoiar operações entre tabelas.

É bom entender que esse tipo de recurso faz um dump dos dados na memória para serem consultados de forma mais rápida economizando acesso a disco.

Preste atenção somente ao crescimento do TempDB pois é ele quem gerencia estes objetos utilizados no banco.

Gostou?! Obrigado pela visita!

Link para o Script.