Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

SQL Server FOR EACH-Schleife

Hier ist eine Option mit einer Tabellenvariablen:

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

Sie können dasselbe mit einer temporären Tabelle machen:

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

Sie sollten uns sagen, was Ihr Hauptziel ist, wie von @JohnFx gesagt wurde, dies könnte wahrscheinlich auf eine andere (effizientere) Weise erreicht werden.