[sql] 기본 매개 변수 값으로 SQL 함수?

다음과 같이 기본 매개 변수 값을 변경해 보았습니다.

ALTER PROCEDURE [dbo].[my_sp]
@currentDate datetime = GETDATE()

모든 SQL 사전 컴파일러가 내게 준 모든 오류는 다음과 같습니다.

메시지 102, 수준 15, 상태 1, 프로 시저 my_sp, 줄 8 ‘(‘근처에 잘못된 구문이 있습니다.

이미 절차를 만들었습니다. (관련성이 있는지 잘 모르겠습니다.) null 기본값을 사용하고 나중에 확인했지만 적절하지 않은 것 같습니다. 한 줄로 할 수 있습니까?


업데이트 : 저장 프로 시저 매개 변수에 대한 MSDN의 설명에서 벗어났습니다 .

[= default] 매개 변수의 기본값입니다. 기본값이 정의 된 경우 해당 매개 변수에 대한 값을 지정하지 않고 함수를 실행할 수 있습니다.

참고 :
varchar (max) 및 varbinary (max) 데이터 형식을 제외한 CLR 함수에 대해 기본 매개 변수 값을 지정할 수 있습니다.

함수의 매개 변수에 기본값이있는 경우 기본값을 검색하기 위해 함수가 호출 될 때 키워드 DEFAULT를 지정해야합니다. 이 동작은 매개 변수를 생략하면 기본값을 의미하는 저장 프로 시저에서 기본값과 함께 매개 변수를 사용하는 것과 다릅니다.

내가 잘못 읽고 있습니까?

감사합니다.



답변

저장 프로 시저 매개 변수의 기본값은 상수 여야 합니다 . 다음을 수행해야합니다 …

ALTER Procedure [dbo].[my_sp]
@currentDate datetime = null
AS
IF @currentDate is null
SET @currentDate = getdate()


답변

나는 그것이 가능하다고 생각하지 않는다. 리터럴 (상수) 값을 기본값으로 사용해야한다.

그러나 다음과 같이 할 수 있습니다.

Set @currentDate = Coalesce(@currentDate , GetDate())


답변

다음과 같이 시도 할 수 있습니다.

Set @CurrentDate=IsNull(@CurrentDate,GetDate())


답변

귀하의 예에서 대괄호로 Microsoft SQL Server를 사용하고 있다고 추측합니다.

에서 MSDN :

문자열과 같은 상수 값만; 스칼라 함수 (시스템, 사용자 정의 또는 CLR 함수) 또는 NULL을 기본값으로 사용할 수 있습니다.

이 함수 GETDATE()는 때때로 다른 값을 반환하므로 상수 표현식이 아닙니다.


답변

이 값은 결정적이지 않으며 사용할 수 없습니다.


답변

암시:

기본값을 NULL

GETDATE()프런트 엔드에서 기본값 을 수행하십시오.


답변