Tabelas Temporárias no SQL Server

Publicado: março 18, 2010 em SQL Server - TSQL

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

About these ads
Comentários
  1. Francinildo Vieira disse:

    Parabéns Hélio!

    Ótimo post. Me ajudou muito

    Obrigado!

  2. Hi to every , because I am in fact eager of reading
    this website’s post to be updated daily. It contains nice stuff.

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

WordPress.com Logo

Você está comentando usando sua conta WordPress.com. Sair / Mudar )

Imagem do Twitter

Você está comentando usando sua conta Twitter. Sair / Mudar )

Foto do Facebook

Você está comentando usando sua conta Facebook. Sair / Mudar )

Conectando a %s