Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Tabelas temporárias globais - SQL Server vs Oracle


Tabelas temporárias no Oracle são objetos permanentes que contêm dados temporários que são locais de sessão. Tabelas temporárias no SQL Server são objetos temporários.
  1. No SQL Server, uma tabela temporária global contém dados visíveis para todas as sessões. "As tabelas temporárias globais são visíveis para qualquer usuário e qualquer conexão após serem criadas." http://msdn.microsoft.com/en-us/library/ms186986 .aspx
  2. As tabelas temporárias globais ainda são objetos temporários que não persistem indefinidamente e podem precisar ser criados antes do uso. "As tabelas temporárias globais são... são excluídas quando todos os usuários que fazem referência à tabela se desconectam da instância do SQL Server." http://msdn.microsoft.com/en-us/library/ms186986 .aspx

Acho que uma tabela temporária local, ou variável de tabela, é o mais próximo de ser a mesma tabela temporária global do Oracle, a grande diferença é que você precisa criá-la sempre.

Normalmente, em um caso como o seu, passo 3, adicionar linhas à tabela temporária, seria feito fazendo um select ... into #temp_table_name .... (equivalente a Oracle create table ... as select ... ) http://msdn.microsoft.com/en-us/library/ ms188029.aspx

Além disso, você não pode fazer o seguinte em um proc armazenado:(pseudo código.)
begin proc
   call another proc to create local temp table.
   use temp table
end proc

As tabelas temporárias locais são destruídas ao retornar do procedimento armazenado que as criou.

Atualização de 14/10/2014: O comportamento das tabelas temporárias locais é diferente na versão Parallel Data Warehousev do SQL Server. As tabelas temporárias não são eliminadas na saída do procedimento armazenado que as criou e, em vez disso, continuam existindo pelo restante da sessão. Esse comportamento observado em:
select @@version
Microsoft SQL Server 2012 - 10.0.5108.1 (X64) Jun 24 2014 20:17:02 Copyright (c) Microsoft Corporation Parallel Data Warehouse (64-bit) on Windows NT 6.2 <X64> (Build 9200: )