2016-10-20 1 views
0

I는 다음과 같습니다 proc 디렉토리에 저장되어 있습니다내 저장된 프로 시저에 매개 변수를 제공 할 수 없습니다

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 
관련 문제