2016-10-20 18 views
0

我有一個存儲過程,看起來像這樣:不能提供參數,我的存儲過程

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' 

然後它

在絕望的希望,這是一種小故障,而不是我的錯誤,我試圖刪除和重新創建proc,但沒有運氣。

我很困惑。誰能幫忙?

+0

由於當參數值爲NULL時已經使用'GETDATE()',爲什麼不將NULL傳遞到存儲過程以使其工作? – Bridge

回答

1
Declare @MyDate Datetime = getdate() 
EXEC dbo.UpdateLastCleanDatesNormalSchedule @MyDate 
相關問題