IT

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

lottoking 2020. 8. 20. 19:07
반응형

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


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

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

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

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

이미 절차를 만들었습니다. (관련성이 있는지 잘 모르겠습니다.) null 언급을 사용하고 나중에 확인한 내용이 없습니다. 한 줄로 할 수 있습니까?


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

[= 기본값] 매개 변수의 주소입니다. 언어가 정의 된 경우 해당하는 경우 변수에 대한 값을 지정하지 않고 함수를 사용할 수 있습니다.

참고 :
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()마치 엔드에서 이야기를 수행하십시오.

참고 URL : https://stackoverflow.com/questions/470664/sql-function-as-default-parameter-value

반응형