PUBLICIDADE
Este artigo tem nota
9

Autor

lemeleme

Ricardo Leme

membro deste junho de 2009

Tags


Enquete

O mercado de publicidade na web chegou no seu limite?
PUBLICIDADE

quarta-feira, 29 de fevereiro de 2012

Como utilizar e criar tabelas temporárias no SQL Server


Sabe aquela situação onde você precisa por exemplo, copiar os dados de uma determinada tabela para uma "tabela temporária", faz os ajustes necessários, retorna os dados da tabela temporária para a tabela principal e aí elimina a tabela?

Pois bem, saiba que o SQL Server permite que você crie uma tabela temporária, ou seja, a tabela existirá somente enquanto a conexão estiver ativa com o banco de dados. Ao encerrar a conexão a tabela automaticamente é eliminada!

Além disso a tabela temporária não fica no database de produção. Ela sempre é criada no database tempdb e poderá ser visualizada apenas pelo usuário que efetuou a conexão.

Vejamos um exemplo:

Considere a seguinte tabela:

CREATE TABLE LOC_LOCACAO (
LOC_IN_CODIGO INT NOT NULL CONSTRAINT LOC_PK_LOCACAO PRIMARY KEY,
LOC_DT_LOCACAO SMALLDATETIME,
LOC_RE_VALOR NUMERIC(12,2)
);

Inserindo alguns registros:

SET DATEFORMAT YMD
Define a data no formato YMD, evitando erro no SQL em Português
insert into LOC_LOCACAO values (1,'2009-07-06',3.50);
insert into LOC_LOCACAO values (2,'2009-07-06',4.50);
insert into LOC_LOCACAO values (3,'2009-07-07',4.50);

Digamos que você precisa copiar os dados para uma tabela temporária que iremos chamar de LOC_LOCACAOTEMP

Temos duas opções:

1. Criar a tabela temporária durante o próprio comando SELECT/INSERT:
SELECT
LOC_IN_CODIGO, LOC_DT_LOCACAO, LOC_RE_VALOR
INTO #LOC_LOCACAOTEMP
FROM LOC_LOCACAO

Observe que o nome da tabela temporária é iniciado pelo caractere #.

2. A outra opção seria criar a tabela na "unha":
CREATE TABLE #LOC_LOCACAOTEMP (
LOC_IN_CODIGO INT NOT NULL,
LOC_DT_LOCACAO SMALLDATETIME,
LOC_RE_VALOR NUMERIC(12,2)
);

E depois rodar o seu comando de insert, por exemplo:

INSERT INTO #LOC_LOCACAOTEMP VALUES (7,'2008-06-30',3.50);

Para visualizar os registros da tabela temporária:

SELECT * FROM #LOC_LOCACAOTEMP

ATENÇÃO! Observe que essa tabela existe apenas para o usuário da atual conexão.

Tente abrir o SQL Server Management Studio Express em uma outra janela ou outra máquina e rodar o seguinte comando:

SELECT * FROM #LOC_LOCACAOTEMP

Irá dar uma mensagem de erro avisando que a tabela não existe!

"Poxa! Mas eu queria criar uma tabela temporária que pudesse ser compartilhada em outra estação... Tem como?"

Sim! É possível criar uma tabela temporária compartilhável, ou como ela é chamada no SQL de TEMP GLOBAL TABLE.

Vejamos como criar a tabela temporária global utilizando o mesmo exemplo já visto:

CREATE TABLE ##LOC_LOCACAOTEMP
( LOC_IN_CODIGO INT NOT NULL,

LOC_DT_LOCACAO SMALLDATETIME,
LOC_RE_VALOR NUMERIC(12,2)
);

Notou algo diferente? Não?

A única diferença é que a tabela irá iniciar por dois caracteres #.

Não esqueça: Assim que a conexão que a criou se desconectar a tabela será destruída!

Sim   Não   Este artigo foi útil para você?
NotaComentário
9
guiski comentou em 29/5/2012

Otimo

Bem util para ser usado num tipo de "sessao"
Regras:
Os comentários seguem as seguintes regras:
  • Todos os comentários são enviados por membros cadastrados no site.
  • A pontuação de comentários de conteúdo do próprio membro não serão computados.
  • Os comentários serão pré-aprovados, porém a equipe do site revisará o conteúdo de todos os comentários podendo ser invalidados (inclusive a pontuação).
  • Os comentários precisam ter, obrigatóriamente, coerência sobre o conteúdo que será comentado.
  • O membro que atingir 5 comentários invalidados não poderá mais comentar dentro do site. Com isso o membro não poderá mais ganhar pontos com comentários.
  • Há um limite de 10 comentários por dia para cada membro.
  • Qualquer comentário após ter sido publicado poderá ser retirado através da opção ( denunciar)

Comente

     (ainda não tem cadastro? clique aqui!)


Máximo de 30 caracteres

Máximo de 255 caracteres
 

© 2006-2013 R&W Informática Ltda. - Todos os direitos reservados. - Política de Privacidade | Mapa do Site