Olá pessoal,
Hoje vamos falar de tabelas temporarias no SQL Server, é um assunto bem simples, mais gera muitas dúvidas, principalmente entre desenvolvedores, bom vamos lá, primeiramente vamos conceituar as diferenças entre as tabelas temporárias.
- Toda tabela temporaria começa com #;
- Elas estão disponiveis durante a conexão do usuário, ao se desconectar elas são automaticamente excluídas;
- São armazenadas no TempDB, na pasta de Tabelas Temporarias;
- Existem dois tipos de tabelas temporárias;
- Tabelas que estão disponível somente na consulta atual. Quando criamos esta tabela é indicado por uma # no inicio do nome da tabela. Ex. #Teste;
- Tabelas que estão dísponivel para todas as consultas dentro da sessão do usuário. É inidcado por cerquilhas duplas no inicio do nome da tabela (##). Ex. ##Teste.
Vamos a criação das tabelas de exemplo:
Abra o SQL Server Management Studio, logue no seu Banco de Dados, escolha um banco de sua preferência e inicie uma nova consulta. Digite os comandos abaixo:
create table ##teste
(id int identity(1,1),
nome varchar(10))
insert into ##teste (nome) values (‘João’)
insert into ##teste (nome) values (‘Lucas’)
insert into ##teste (nome) values (‘Mateus’)
insert into ##teste (nome) values (‘Isaque’)
insert into ##teste (nome) values (‘Marcio’)
insert into ##teste (nome) values (‘Fernando’)
insert into ##teste (nome) values (‘Carlos’)
insert into ##teste (nome) values (‘Pedro’)
insert into ##teste (nome) values (‘Manuel’)
insert into ##teste (nome) values (‘Joaquim’)
Select id,nome from ##Teste
Clique em F5 ou execute a consulta, o resultado da consulta retornará os dados inseridos acima. Abra uma nova janela de consulta pode ser até com um banco de dados diferente. Escreva esta parte da consulta e a execute.
Select id,nome from ##Teste
Você ainda verá um resultado idêntico a primeira consulta. Isto acontece por que usamos duas cerquilhas no inicio do nome da tabela, que faz com que a tabela temporária em toda nossa sessão independente da consulta em si.
Agora vamos criar uma outra tabela temporária,mais com apenas uma cerquilha, vamos a ação
create table #teste
(id int identity(1,1),
nome varchar(10))
insert into #teste (nome) values (‘João’)
insert into #teste (nome) values (‘Lucas’)
insert into #teste (nome) values (‘Mateus’)
insert into #teste (nome) values (‘Isaque’)
insert into #teste (nome) values (‘Marcio’)
insert into #teste (nome) values (‘Fernando’)
insert into #teste (nome) values (‘Carlos’)
insert into #teste (nome) values (‘Pedro’)
insert into #teste (nome) values (‘Manuel’)
insert into #teste (nome) values (‘Joaquim’)
select * from #teste
Rodando esta consulta perceberemos que será mostrado os dados que foram inseridos. Agora vamos abrir uma nova janela de consulta identico ao que fizemos anteriormente e rodaremos somente a parte da consulta que contem a instrução Select.
select * from #teste
A consulta não será efetuada retornando a mensagem de erro:
Msg 208, Level 16, State 0, Line 1
Invalid object name ‘#teste’.
Isto ocorre pois a nossa tabela com uma cerquilha esta disponível apenas para a consulta na qual ela foi criada.
É um assunto bem fácil, mais bem importante até mesmo que a usualidade deste tipo de consulta é muito grande. O Script de exemplo da criação de tabelas podem ser baixado aqui e o arquivo para consultas em uma nova sessão pode ser baixado aqui.
Bom espero que tenha gostado deste post, e qualquer dúvida ou sugestão para posts estou a disposição pelo email helio_consultor@hotmail.com.
abs,
Helio Carrilho

Parabéns Hélio!
Ótimo post. Me ajudou muito
Obrigado!
Hi to every , because I am in fact eager of reading
this website’s post to be updated daily. It contains nice stuff.