sql >> Databáze >  >> RDS >> Sqlserver

SQL Server PRO KAŽDOU smyčku

Zde je možnost s proměnnou tabulky:

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

Totéž můžete udělat s tabulkou temp:

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

Měli byste nám říct, jaký je váš hlavní cíl, jak řekl @JohnFx, pravděpodobně by to šlo udělat jiným (efektivnějším) způsobem.



  1. Dynamické MySQL s lokálními proměnnými

  2. Transponování dynamických sloupců do řádků

  3. MYSQL last_insert_id() a souběžnost

  4. Ukládání nadbytečných cizích klíčů, aby se zabránilo spojení