Array
(
    [0] => stdClass Object
        (
            [Votos_Balanceados] => 1
            [id] => 516855
            [titulo] => SQLSERVER - TEMPORARIA COM WITH
            [dataCadastro] => DateTime Object
                (
                    [date] => 2015-04-15 10:42:33
                    [timezone_type] => 3
                    [timezone] => America/Sao_Paulo
                )

            [isFirstPost] => -1
            [idUsuario] => 378439
            [status] => A
            [isExample] => 
            [NomeUsuario] => Marcos P
            [Apelido] => 
            [Foto] => 378439_20140801115452.png
            [Conteudo] => 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 : [url:descricao=balaiotecnologico]http://balaiotecnologico.blogspot.com.br/2014/01/facilitando-criacao-de-queries.html[/url] ) )

SQLSERVER - TEMPORARIA COM WITH

Diego Segismundo
   - 15 abr 2015

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!

Post mais votado

Marcos P
   - 15 abr 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

Jothaz
   - 15 abr 2015

Inicialmente leia WITH common_table_expression (Transact-SQL)

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.

Diego Segismundo
   - 15 abr 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.

Jothaz
   - 15 abr 2015


Citação:
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.


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.

Marcos P
   - 15 abr 2015

E aí Diego... sim, não ou talvez ?

Marcos P
   - 15 abr 2015

E aí Diego... sim, não ou talvez ?

Diego Segismundo
   - 15 abr 2015

Sensacional!

Muito obrigado.

Roniere Almeida
   - 15 abr 2015

Disponha Diego, mais duvidas, é só perguntar!