반응형
새 선택적 매개 변수를 허용하도록 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'가 필요하지 않으며 저장 프로 시저 에서처럼 매개 변수를 생략하기 만하면됩니다.
반응형
'Program Club' 카테고리의 다른 글
| 배열에서 변경 가능한 목록을 만드시겠습니까? (0) | 2020.11.30 |
|---|---|
| 차원의 "x"에 적합한 HTML 엔티티는 무엇입니까? (0) | 2020.11.30 |
| Twitter Bootstrap 캐 러셀 높이가 다른 이미지로 인해 화살표가 튀는 현상 (0) | 2020.11.30 |
| .Include () 대 EntityFramework의 .Load () 성능 (0) | 2020.11.30 |
| 개체 'Users', 데이터베이스 'XXX', 스키마 'dbo'에 대한 SELECT 권한이 거부되었습니다. (0) | 2020.11.30 |