Tabelas temporárias no Sql Server  


 Tabelas Temporárias são criadas no database TempDB e podem ser classificadas em Locais e Globais:

·         Tabelas Temporárias Locais são criadas com o prefixo "#" e possuem visibilidade restrita para a conexão responsável por sua criação; outras conexões não "enxergam" a tabela.
·         Tabelas Temporárias Globais são criadas com o prefixo "##" e são visíveis por todas as conexões

Sintaxe:

CREATE TABLE #nomeTable
    (
     nomecampoA varchar(80),
     nomecampoB money
    )

Tabelas temporárias são muito utilizadas quando precisamos reunir vários registros de várias tabelas em uma única seleção e exibi-las em uma aplicação qualquer (p.ex.: Delphi, Visual Studio, ASP.NET, etc.). .

É fundamental para aplicações cliente/servidor onde vários usuários estão acessando aquela procedure ao mesmo tempo.

Aqui vai um exemplo prático da utilização de tabelas temporárias locais.É importante saber que neste exemplo a tabela temporária só existirá enquanto a procedure está sendo executada, após a execução da mesma ela é automaticamente excluída. Aproveitei para colocar um exemplo utilizando  o CASE do Sql Server.

CREATE PROCEDURE TesteTabelaTemporaria
as

create table #tmpTotalPage
    (mes smallint null,
     totalmes smallint null,
     mediames decimal(9, 3) null )

Insert into #tmpTotalPage ( mes, totalmes, media)
(select DATEPART(MONTH,data) as Mes, count(*) as TotalAcessos, null
 from Acessos  AS AC 
INNER JOIN CadastroTB AS C ON AC.idcad = C.idCad
group by DATEPART(MONTH,data))


select  mes, totalmes,
media = case
 when mes = 1 then  totalmes / 31
 when mes = 2 then  totalmes / 28
 when mes = 3 then  totalmes / 30
 when mes = 4 then  totalmes / 31
 when mes = 5 then  totalmes / 30
 when mes = 6 then  totalmes / 31
 when mes = 7 then  totalmes / 30
 when mes = 8 then  totalmes / 31
 when mes = 9 then  totalmes / 30
 when mes = 10 then  totalmes / 31
 when mes = 11 then  totalmes / 30
 when mes = 12 then  totalmes / 31 
end
from #tmpTotalPage

Por enquanto é só, até a próxima pessoal!
 
Fabio Correa  - Equipe DevMedia Group