Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

SQL Server PARA CADA Loop


Aqui está uma opção com uma variável de tabela:
DECLARE @MyVar TABLE(Val DATETIME)
DECLARE @I INT, @StartDate DATETIME
SET @I = 1
SET @StartDate = '20100101'

WHILE @I <= 5
BEGIN
    INSERT INTO @MyVar(Val)
    VALUES(@StartDate)

    SET @StartDate = DATEADD(DAY,1,@StartDate)
    SET @I = @I + 1
END
SELECT *
FROM @MyVar

Você pode fazer o mesmo com uma tabela temporária:
CREATE TABLE #MyVar(Val DATETIME)
DECLARE @I INT, @StartDate DATETIME
SET @I = 1
SET @StartDate = '20100101'

WHILE @I <= 5
BEGIN
    INSERT INTO #MyVar(Val)
    VALUES(@StartDate)

    SET @StartDate = DATEADD(DAY,1,@StartDate)
    SET @I = @I + 1
END
SELECT *
FROM #MyVar

Você deve nos dizer qual é o seu objetivo principal, como foi dito por @JohnFx, isso provavelmente poderia ser feito de outra maneira (mais eficiente).