无法为我的存储过程提供参数

时间:2016-10-20 14:25:54

标签: tsql stored-procedures

我有一个看起来像这样的存储过程:

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'

然后它有效。

绝望地希望这是某种故障而不是我的错误,我尝试删除并重新创建过程,但没有运气。

我很困惑。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

Declare @MyDate Datetime = getdate()
EXEC dbo.UpdateLastCleanDatesNormalSchedule @MyDate