Como utilizar e criar tabelas temporárias no SQL Server
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 (Inserindo alguns registros:
LOC_IN_CODIGO INT NOT NULL CONSTRAINT LOC_PK_LOCACAO PRIMARY KEY,
LOC_DT_LOCACAO SMALLDATETIME,
LOC_RE_VALOR NUMERIC(12,2)
);
SET DATEFORMAT YMDDigamos que você precisa copiar os dados para uma tabela temporária que iremos chamar de LOC_LOCACAOTEMP
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);
Temos duas opções:
1. Criar a tabela temporária durante o próprio comando SELECT/INSERT:
SELECTObserve que o nome da tabela temporária é iniciado pelo caractere #.
LOC_IN_CODIGO, LOC_DT_LOCACAO, LOC_RE_VALOR
INTO #LOC_LOCACAOTEMP
FROM LOC_LOCACAO
2. A outra opção seria criar a tabela na "unha":
CREATE TABLE #LOC_LOCACAOTEMP (E depois rodar o seu comando de insert, por exemplo:
LOC_IN_CODIGO INT NOT NULL,
LOC_DT_LOCACAO SMALLDATETIME,
LOC_RE_VALOR NUMERIC(12,2)
);
INSERT INTO #LOC_LOCACAOTEMP VALUES (7,'2008-06-30',3.50);Para visualizar os registros da tabela temporária:
SELECT * FROM #LOC_LOCACAOTEMPATENÇÃ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_LOCACAOTEMPIrá 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_LOCACAOTEMPNotou algo diferente? Não?
( LOC_IN_CODIGO INT NOT NULL,
LOC_DT_LOCACAO SMALLDATETIME,
LOC_RE_VALOR NUMERIC(12,2)
);
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