GETDATE로 저장 프로 시저를 호출하는 ')'근처의 잘못된 구문


120

어쩌면 나는 '오후'의 순간을 보내고 있을지도 모르지만, 누구든지 내가 왜

메시지 102, 수준 15, 상태 1, 줄 2
')'근처에 잘못된 구문이 있습니다.

실행할 때

CREATE PROC DisplayDate 
    (@DateVar DATETIME) 
AS 
BEGIN
    SELECT @DateVar
END
GO

EXEC DisplayDate GETDATE();

답변:


169

함수 호출을 저장 프로 시저에 대한 인수로 전달할 수 없습니다. 대신 중간 변수를 사용하십시오.

DECLARE @tmp DATETIME
SET @tmp = GETDATE()

EXEC DisplayDate @tmp;

22
이 제한에 대한 이유가 있습니까?
Zameer

@student 부울 및 정수 열 유형 부족 또는 Oracle에서 필터링 된 키 부족과 같은 기본 제한에 대한 이유가 있습니까?
Skipper

20

으로 미치 밀 언급 당신은 함수를 전달할 수 없습니다.

귀하의 경우 미리 계산 된 값 또는 GETDATE ()를 전달해야하는 경우 기본값을 사용할 수 있습니다. 예를 들어 저장 프로 시저를 수정합니다.

ALTER PROC DisplayDate 
(
    @DateVar DATETIME = NULL
) AS 
BEGIN
    set @DateVar=ISNULL(@DateVar,GETDATE())

    --the SP stuff here
    SELECT @DateVar
END
GO

그런 다음 시도하십시오.

EXEC DisplayDate '2013-02-01 00:00:00.000'
EXEC DisplayDate

비고 : 여기서는이 매개 변수에 NULL 값을 사용하지 않는다고 가정했습니다. 귀하의 경우가 아닌 경우-사용하지 않은 다른 값 (예 : '1900-01-01 00 : 00 : 00.000')을 사용할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.