SQL 함수를 기본 매개 변수 값으로 지정하시겠습니까?
다음과 같이 디폴트 파라미터 값을 변경하려고 했습니다.
ALTER PROCEDURE [dbo].[my_sp]
@currentDate datetime = GETDATE()
SQL 프리 컴파일러에서 받은 오류는 다음과 같습니다.
Msg 102, 레벨 15, 상태 1, 프로시저 my_sp, 행 8 ' ( )근처의 구문이 올바르지 않습니다.
프로시저는 이미 작성되어 있습니다.(그것이 관련이 있는지는 잘 모르겠습니다.)null 기본값을 사용하고 나중에 확인했는데 적절하지 않은 것 같습니다.이거 한 줄로 해도 돼요?
Update: I was going off of 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()
프런트 엔드에 있습니다.
언급URL : https://stackoverflow.com/questions/470664/sql-function-as-default-parameter-value
'source' 카테고리의 다른 글
Swift에서 iOS에 UUID 생성 (0) | 2023.04.09 |
---|---|
SQL Server가 서명되지 않은 데이터 유형을 지원하지 않는 이유는 무엇입니까? (0) | 2023.04.09 |
stderr에 출력하는 에코 (0) | 2023.04.09 |
Date Time에서 시간 추출(SQL Server 2005) (0) | 2023.04.09 |
데이터베이스 스키마를 SQL 파일로 내보내기 (0) | 2023.04.09 |