我有一个看起来像这样的存储过程:
CREATE PROC [dbo].[UpdateLastCleanDatesNormalSchedule]
@BaseDate DATETIME = NULL
AS
IF @BaseDate IS NULL
SET @BaseDate=GETDATE()
UPDATE Locations
SET LastCleaned=dbo.fnFindTheLastDay(vw.CleanDay,@BaseDate,LastCleaned)
FROM Locations
INNER JOIN vwMostRecentCleanDay vw ON
Locations.NormalFrequencyCode=vw.FrequencyCode
代码非常简单,正如您所看到的,调用一个函数来更新街道清理数据库的数据,其中包含上次清理该位置的日期。
这是我的问题。 这有效:
EXEC dbo.UpdateLastCleanDatesNormalSchedule
但这不是:
EXEC dbo.UpdateLastCleanDatesNormalSchedule GETDATE()
并且也不是这样:
EXEC dbo.UpdateLastCleanDatesNormalSchedule @BaseDate=GETDATE()
其中任何一个都会导致错误
Incorrect syntax near ')'.
如果我将鼠标悬停在摇摆不定的红线上,则通过调用GETDATE()的结束括号,工具提示会报告“语法附近的语法错误”。)期望SELECT或'('。
如果我想传递特定日期并尝试此操作:
EXEC dbo.UpdateLastCleanDatesNormalSchedule CONVERT(Datetime,'01 September 2016')
我收到错误
Incorrect syntax near the keyword 'CONVERT'.
但如果我将日期作为纯字符串传递:
EXEC dbo.UpdateLastCleanDatesNormalSchedule '01 September 2016'
然后它有效。
绝望地希望这是某种故障而不是我的错误,我尝试删除并重新创建过程,但没有运气。
我很困惑。有人可以帮忙吗?
答案 0 :(得分:1)
Declare @MyDate Datetime = getdate()
EXEC dbo.UpdateLastCleanDatesNormalSchedule @MyDate