sql >> Databasteknik >  >> RDS >> Sqlserver

SQL Server FÖR VARJE slinga

Här är ett alternativ med en tabellvariabel:

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

Du kan göra samma sak med en temptabell:

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

Du bör berätta för oss vad som är ditt huvudsakliga mål, som sades av @JohnFx, detta skulle förmodligen kunna göras på ett annat (mer effektivt) sätt.



  1. Laddar data från en textfil till en tabell i oracle

  2. Oracle Julian dag på året

  3. MySQL + Code First + Lazy Load problem!

  4. Begränsa raderingsfrågan med viloläge