正如其他受访者所说,我认为你不能完全按照你的要求去做。
但是我认为您可以使用默认参数做出合理的近似。如果你知道一个合理的上限,你可以定义一个类似这样的函数:
- 编辑
事实证明,您不能在 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)