복붙노트

[SQL] 새 선택적 매개 변수를 허용하도록 SQL 서버 기능을 변경합니다

SQL

새 선택적 매개 변수를 허용하도록 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)

같이

일이 안 내 이해에 따라한다.

난 아무것도없는 건가요? 미리 감사드립니다.

해결법

  1. ==============================

    1.에서하는 기능을 만듭니다

    에서하는 기능을 만듭니다

    그래서 당신은 할 필요가 :

    SELECT dbo.fCalculateEstimateDate(647,DEFAULT)
    
  2. ==============================

    2.SELECT dbo.fCalculateEstimateDate을 유지하는 방법은 (647) 통화 작업은 다음과 같습니다

    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
    
  3. ==============================

    3.여기에 T-SQL을 제안 나는 EXECUTE 명령을 발견했다 - 기본 매개 변수와 기능이 제대로 작동 할 수 있습니다. 저장 프로 시저와 마찬가지로 함수를 호출 할 때 필요없는 '기본'이없는이 방법, 당신은 단지 매개 변수를 생략합니다.

    여기에 T-SQL을 제안 나는 EXECUTE 명령을 발견했다 - 기본 매개 변수와 기능이 제대로 작동 할 수 있습니다. 저장 프로 시저와 마찬가지로 함수를 호출 할 때 필요없는 '기본'이없는이 방법, 당신은 단지 매개 변수를 생략합니다.

  4. from https://stackoverflow.com/questions/12721869/alter-a-sql-server-function-to-accept-new-optional-parameter by cc-by-sa and MIT license