sql server 2008中的datetime变量问题

时间:2013-01-04 17:17:23

标签: sql sql-server sql-server-2008

我正在尝试在SQL中声明一个日期变量,当我调试它时,它会挂起SET部分。查询还有更多内容,但它实际上是循环遍历,添加不同的输入,直到它到达12月31日。

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

如果我告诉它继续它会给出错误:

  

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

感谢任何帮助。

1 个答案:

答案 0 :(得分:4)

从脚本中删除GO; GO基本上是开始处理的新部分,而@ShiftDate将不在您脚本的下一部分的范围内。

有关详细信息,请参阅MSDN documentation on GO