SQLSERVER - TEMPORARIA COM WITH
Bom dia!
Tenho duvidas na utilização da cláusula WITH para criação de tabelas temporárias. Não entendi muito bem no MSDN e não achei conteúdo na internet sobre o assunto.
Até onde sei, ele cria tabela temporária, porem gostaria de um exemplo com a sintaxe.
Sei que as tabelas criadas com # são temporárias com visualização apenas a sessão que a criou. E as temporárias criadas com ## são visiveis a todas as sessões, logicamente desde que tenham permissão, para acessar o banco em que foi criada.
E quanto as temporárias com WITH, ficam atreladas a sessão que criou? Qual a diferença em relação as # e ##?
Obrigado!
Tenho duvidas na utilização da cláusula WITH para criação de tabelas temporárias. Não entendi muito bem no MSDN e não achei conteúdo na internet sobre o assunto.
Até onde sei, ele cria tabela temporária, porem gostaria de um exemplo com a sintaxe.
Sei que as tabelas criadas com # são temporárias com visualização apenas a sessão que a criou. E as temporárias criadas com ## são visiveis a todas as sessões, logicamente desde que tenham permissão, para acessar o banco em que foi criada.
E quanto as temporárias com WITH, ficam atreladas a sessão que criou? Qual a diferença em relação as # e ##?
Obrigado!
Diego Segismundo
Curtidas 0
Melhor post
Marcos P
15/04/2015
Fisicamente... o objeto criado com WITH, difere das TEMPs padrão, por não ser criado fisicamente no banco e por ter seu tempo de vida restrito ao escopo de execução da query.
Logicamente... o uso de uma CTE permite o tratamento de algumas estruturas avançadas, que não são implementadas de maneira trivial com outros elementos disponíveis.
Dentre esses destaco :
> "Group by" de uma função não determinística ( ou externa )
> Referência ao resultado da "temporária" várias vezes na mesma query
> Queries recursivas, aonde você refina a seleção a partir da mesma sintaxe
Acaba sendo um paradigma um pouco diferente de uso, mas muito próximo das TEMPs tradicionais...
Achei um link bacana em : balaiotecnologico
Logicamente... o uso de uma CTE permite o tratamento de algumas estruturas avançadas, que não são implementadas de maneira trivial com outros elementos disponíveis.
Dentre esses destaco :
> "Group by" de uma função não determinística ( ou externa )
> Referência ao resultado da "temporária" várias vezes na mesma query
> Queries recursivas, aonde você refina a seleção a partir da mesma sintaxe
Acaba sendo um paradigma um pouco diferente de uso, mas muito próximo das TEMPs tradicionais...
Achei um link bacana em : balaiotecnologico
GOSTEI 1
Mais Respostas
Jothaz
15/04/2015
Inicialmente leia [url:descricao=WITH common_table_expression (Transact-SQL)]https://msdn.microsoft.com/pt-br/library/ms175972.aspx?f=255&MSPPError=-2147217396[/url]
Dai post suas dúvidas.
O WIHT cria um conjunto de registros chamado de CTE (expressão de tabela comum). É uma espécie de tabela temporária que dura apenas uma consulta e, em seguida, desaparece por si só e não gera um objeto table como os resultados no tempdb.
Talvez o mais importe sobre o WITH é que a definição da tabela pode referir-se a si mesmo de forma recursiva.
Dai post suas dúvidas.
O WIHT cria um conjunto de registros chamado de CTE (expressão de tabela comum). É uma espécie de tabela temporária que dura apenas uma consulta e, em seguida, desaparece por si só e não gera um objeto table como os resultados no tempdb.
Talvez o mais importe sobre o WITH é que a definição da tabela pode referir-se a si mesmo de forma recursiva.
GOSTEI 0
Diego Segismundo
15/04/2015
Jhotaz, obrigado pela resposta.
Porem, como informei no meu post inicial:
"... Não entendi muito bem no MSDN."
Por isso o link não vai me esclarecer muita coisa.
Obrigado.
Porem, como informei no meu post inicial:
"... Não entendi muito bem no MSDN."
Por isso o link não vai me esclarecer muita coisa.
Obrigado.
GOSTEI 0
Jothaz
15/04/2015
Jhotaz, obrigado pela resposta.
Porem, como informei no meu post inicial:
"... Não entendi muito bem no MSDN."
Por isso o link não vai me esclarecer muita coisa.
Obrigado.
Porem, como informei no meu post inicial:
"... Não entendi muito bem no MSDN."
Por isso o link não vai me esclarecer muita coisa.
Obrigado.
Você leu o que postei abaixo do link?
Qual dúvida ainda persiste?
Na internet existem centenas de post sobre o assunto:
SQLSERVER WITH vs temp table
Muitos estão em inglês, mas infelizmente são ossos do ofício.
GOSTEI 0
Marcos P
15/04/2015
E aí Diego... sim, não ou talvez ?
GOSTEI 1
Marcos P
15/04/2015
E aí Diego... sim, não ou talvez ?
GOSTEI 1
Roniere Almeida
15/04/2015
Diego, passando aqui para postar mais dicas:
[url]https://www.devmedia.com.br/tabelas-temporarias-no-sql-server/2610[/url]
[url]https://www.devmedia.com.br/t-sql-e-a-utilizacao-de-tabelas-temporarias/31131[/url]
[url]https://www.devmedia.com.br/tabelas-temporarias-no-sql-server/2610[/url]
[url]https://www.devmedia.com.br/t-sql-e-a-utilizacao-de-tabelas-temporarias/31131[/url]
GOSTEI 1
Diego Segismundo
15/04/2015
Sensacional!
Muito obrigado.
Muito obrigado.
GOSTEI 0
Roniere Almeida
15/04/2015
Disponha Diego, mais duvidas, é só perguntar!
GOSTEI 0