다른 응답자들은 당신이 요구하는 것을 정확히 할 수 있다고 생각하지 않습니다.
그러나 기본 매개 변수를 사용하여 합리적인 근사를 만들 수 있다고 생각합니다. 당신이 합리적인 상한을 알고있는 경우이 같은 함수 뭔가를 정의 할 수 있습니다 :
--edit
당신이 UDF에 기본값을 가질 수 없습니다 밝혀졌습니다.
CREATE FUNCTION dbo.fMax
(
@Value1 float,
@Value2 float,
@Value3 float,
@Value4 float
)
RETURNS float
AS
BEGIN
DECLARE @Result float
SELECT @Value1 = COALESCE(@Value1, @Value2, @Value3, @Value4)
SELECT @Value2 = COALESCE(@Value2, @Value1, @Value3, @Value4)
SELECT @Value3 = COALESCE(@Value3, @Value1, @Value2, @Value4)
SELECT @Value4 = COALESCE(@Value4, @Value1, @Value2, @Value3)
SELECT @Result = @Value1
IF (@Value2 > @Result)
SELECT @Result = @Value2
IF (@Value3 > @Result)
SELECT @Result = @Value3
IF (@Value4 > @Result)
SELECT @Result = @Value4
RETURN @Result
END
과 전화 : 당신이 할 수있는 최선의 최대 매개 변수의 수와 기능을 가지고 의미 기능
를 호출 할 때 또는 오히려 당신이 그들을 정의 할 수 있습니다,하지만 당신은 여전히 값을 지정해야 그것을 좋아해 :
SELECT dbo.fMax(1, 5, 4, null)
그냥 합체를 사용합니까? –
T-SQL에 쓸 수 없습니다. 확장 저장 프로 시저 (예 : C)를 작성하는 경우 알 수없는 매개 변수 수를 허용 할 수 있다고 생각하지만 향후이 기능에 대한 지원이 사라지고 기능과 동일하지 않습니다 (구성 할 수 없습니다). 더 큰 쿼리) –
당신이 당신의 질문에서 읽을 수있는만큼 병합이 이루어져야하므로 달성하려는 것을 보여주는 샘플을 보여줄 수 있습니까? – Tanner