Inicial > SQL Server > Como remover uso de cursores, utilizando CTEs

Como remover uso de cursores, utilizando CTEs

Galera, vou publicar um e-mail que na época mandei apenas para o pessoal daqui da empresa, talvez a informação seja útil pra vocês.

—————————–

Pessoal a fim de informação segue uma dica de como transformar isso:

clip_image002

Nisso:

clip_image004

Sem usar cursor

DECLARE @Tab TABLE(Val_Min Int, Val_Max Int)

INSERT INTO @Tab(Val_Min, Val_Max) VALUES(1,3)

INSERT INTO @Tab(Val_Min, Val_Max) VALUES(15,20);

INSERT INTO @Tab(Val_Min, Val_Max) VALUES(6,9);

SELECT * FROM @TAB

— Cria tabela sequencial que vai de 1 a 100, pode ser qualquer tipo de tabela, neste caso usei a

— funcionalidade de CTE.

WITH Sequencial AS(

SELECT 1 as ID

UNION ALL

SELECT ID + 1

FROM Sequencial

WHERE ID < 100)

— Retorna os dados

SELECT Val_Min, Val_Max, ID

FROM @TAB a

INNER JOIN Sequencial s

ON s.ID >= a.Val_Min

AND s.ID <= a.Val_Max

ORDER BY a.Val_Min, a.Val_Max, s.ID

Esta tabela auxiliar que vai de 1 a 100, serve para bastante coisa.

Aproveito para refazer o convite de cadastrarem meu blog no RSS de seu outlook. Normalmente dicas como essa coloco lá, assim só lê quem tiver interesse.

Segue o link http://fabianosqlserver.spaces.live.com/feed.rss

É só cadastrar em Ferramentas\Configurações de Conta\RSS Feeds\

Categorias:SQL Server
  1. Nenhum comentário ainda.
  1. No trackbacks yet.

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s

%d blogueiros gostam disto: