Blogger templates

Comunidade java aberto - Participe da nossa comunidade no facebook (clique aqui)

Visitas

quarta-feira, 8 de agosto de 2012

SQL Server - Tabela temporária no banco de dados

,

 


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!

Fonte: oficinadanet

0 comentários to “SQL Server - Tabela temporária no banco de dados”

Postar um comentário

Insira seu comentário

 

Java Aberto Copyright © 2011 -- Template created by O Pregador -- Powered by Blogger