Program Club

새 선택적 매개 변수를 허용하도록 SQL 서버 함수 변경

proclub 2020. 11. 30. 20:11
반응형

새 선택적 매개 변수를 허용하도록 SQL 서버 함수 변경


SQL Server 2005에는 이미 다음과 같은 기능이 있습니다.

ALTER function [dbo].[fCalculateEstimateDate] (@vWorkOrderID numeric)
Returns varchar(100)  AS
Begin
  <Function Body>
End

추가 옵션 매개 변수 @ToDate를 허용하도록이 함수를 수정하고 싶습니다. @Todate가 제공된 경우 함수에 논리를 추가 한 다음 기존 코드로 계속 다른 작업을 수행합니다.

기능을 다음과 같이 수정했습니다.

ALTER function [dbo].[fCalculateEstimateDate] (@vWorkOrderID numeric,@ToDate DateTime=null)
Returns varchar(100)  AS
Begin
  <Function Body>
End

이제 함수를 다음과 같이 호출 할 수 있습니다.

SELECT dbo.fCalculateEstimateDate(647,GETDATE())

그러나 다음 호출에서 오류가 발생합니다.

SELECT dbo.fCalculateEstimateDate(647)

같이

프로 시저 또는 함수 dbo.fCalculateEstimateDate에 제공된 인수의 수가 충분하지 않습니다.

내 이해에 따라 발생해서는 안됩니다.

내가 놓친 것이 있습니까? 미리 감사드립니다.


에서 CREATE FUNCTION:

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

따라서 다음을 수행해야합니다.

SELECT dbo.fCalculateEstimateDate(647,DEFAULT)

SELECT dbo.fCalculateEstimateDate(647)통화 를 계속하는 방법 은 다음과 같습니다.

ALTER function [dbo].[fCalculateEstimateDate] (@vWorkOrderID numeric)
Returns varchar(100)  AS
   Declare @Result varchar(100)
   SELECT @Result = [dbo].[fCalculateEstimateDate_v2] (@vWorkOrderID,DEFAULT)
   Return @Result
Begin
End

CREATE function [dbo].[fCalculateEstimateDate_v2] (@vWorkOrderID numeric,@ToDate DateTime=null)
Returns varchar(100)  AS
Begin
  <Function Body>
End

여기에 제안 된 EXECUTE 명령을 찾았습니다. T-SQL- 잘 작동 하는 기본 매개 변수 가있는 함수입니다 . 이 방법을 사용하면 함수를 호출 할 때 'DEFAULT'가 필요하지 않으며 저장 프로 시저 에서처럼 매개 변수를 생략하기 만하면됩니다.

참고 URL : https://stackoverflow.com/questions/12721869/alter-a-sql-server-function-to-accept-new-optional-parameter

반응형