2013-01-04 88 views
0

我想聲明的SQL日期變量,當我調試它,它掛在SET一部分。查詢還有更多,但它本質上是循環的,直到12月31日才添加不同的輸入。問題有日期時間變量在SQL Server 2008

DECLARE @ShiftDate AS Datetime 
BEGIN 
    SET @ShiftDate = '2013-01-01 00:00:00.000' 
END 
DECLARE @ShiftDate AS DATETIME 
BEGIN 
SET @ShiftDate = '2013-01-01 00:00:00.000' 
END 

DECLARE @EndDate AS DATETIME 
BEGIN 
SET @EndDate = '2013-12-31 00:00:00.000' 
END 


GO 
WHILE @ShiftDate <= @EndDate 
BEGIN 
INSERT INTO [ManufacturingTracking].[dbo].[TenteringCrewShift] 
     ([SearchDate] 
     ,[Shift]) 
VALUES (@ShiftDate, 'B') 
SET @ShiftDate = DATEADD(DATE, 1, @ShiftDate) 
IF @ShiftDate > @EndDate 
    BREAK 
ELSE 
    CONTINUE 
END 

如果我告訴它繼續它給人的錯誤:

Must declare the scalar variable "@ShiftDate".

任何幫助表示讚賞。從腳本

+3

工作得很好,是你的* *整個腳本? – LittleBobbyTables

+0

爲什麼在BEGIN END塊內設置? – Chriseyre2000

+0

如果您在不使用BEGIN/END的情況下使用SET,您會得到相同的錯誤?在這裏工作,但也許一些設置/範圍問題? – YvesR

回答

4

刪除GO;該GO基本上開始處理的一個新的部分,並@ShiftDate不會在範圍在腳本的下一章節。

更多信息,請參見MSDN documentation on GO。我

+0

謝謝!這解決了我的問題 –