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
ENDExemplo 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