Pular para o conteúdo

Linguagem SQL (II) (Cursores, While e CTE)

Comando utilizado para realizar laços de repetição.

DECLARE @contador INT
SET @contador = 1
WHILE @contador <= 5
BEGIN
  SELECT @contador
  SET @contador = @contador + 1
END

Exemplo de um Cursor:

DECLARE @ClienteNome VARCHAR(50), @ClienteSexo CHAR(1), @contador INT=0;

    DECLARE [cursorListaCliente] CURSOR FOR
    SELECT Clientes.ClienteNome , ClienteSexo
    FROM Clientes

    OPEN [cursorListaCliente]
    FETCH NEXT FROM [cursorListaCliente] INTO @ClienteNome, @ClienteSexo;

    WHILE @@FETCH_STATUS = 0
    BEGIN
         SET @contador=@contador+1;

    SELECT @ClienteNome as Nome, @ClienteSexo AS Sexo, @contador;
    FETCH NEXT FROM [cursorListaCliente] INTO @ClienteNome, @ClienteSexo
    END
    CLOSE [cursorListaCliente];
      DEALLOCATE [cursorListaCliente];

CTE (Common Table Expression)

WITH ClientesBomRetiro 
AS (
    -- Definição da CTE (consulta interna)
    SELECT ClienteNome, ClienteSobrenome, ClienteBairro
    FROM Clientes
    WHERE ClienteBairro = 'Bom Retiro'
),
ClientesBomAtiradores AS (
    -- Definição da CTE (consulta interna)
    SELECT ClienteNome, ClienteSobrenome, ClienteBairro
    FROM Clientes
    WHERE ClienteBairro = 'Atiradores'
)
-- Consulta Principal
SELECT *
FROM ClientesBomRetiro
UNION
SELECT *
FROM ClientesBomAtiradores

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *