必须声明标量变量“@CURRENTYEAR”

时间:2017-07-19 22:23:06

标签: sql variables

我正在尝试执行以下查询,但它会弹出错误

必须声明标量变量“@CURRENTYEAR”。

    DECLARE @CNTR INT, @POS INT, @STARTYEAR INT, @ENDYEAR INT, @MINDAY INT
    SELECT
           @CURRENTYEAR = MIN([Year])
        , @STARTYEAR = MIN([Year])
        , @ENDYEAR = MAX([Year])
    FROM @Holidays

    WHILE @CURRENTYEAR <= @ENDYEAR
    BEGIN
        SELECT @CNTR = COUNT([Year])
        FROM @Holidays
        WHERE [Year] = @CURRENTYEAR

        SET @POS = 1

        WHILE @POS <= @CNTR
        BEGIN
            SELECT @MINDAY = MIN(DAY)
            FROM @Holidays
            WHERE
                [Year] = @CURRENTYEAR
                AND [Week] IS NULL

            UPDATE @Holidays
                SET [Week] = @POS
            WHERE
                [Year] = @CURRENTYEAR
                AND [Day] = @MINDAY

            SELECT @POS = @POS + 1
        END

        SELECT @CURRENTYEAR = @CURRENTYEAR + 1
    END

为什么错误弹出以及如何解决?

1 个答案:

答案 0 :(得分:0)

在第一行尝试此操作:

DECLARE @CNTR INT, @POS INT, @STARTYEAR INT, @ENDYEAR INT, @MINDAY INT, @CURRENTYEAR INT