创建可以接收多种类型参数的函数

时间:2015-10-29 08:21:13

标签: sql sql-server tsql user-defined-functions

我需要创建一个能找到两个值中较小值的函数。它应该接收INT或TIME类型参数。这种结构的东西:

CREATE FUNCTION fn_Min(@p_1 (time or int), @p_2 (time or int))
RETURNS time
AS
BEGIN
    DECLARE @lesser (time or int)
    IF @p_1 <= @p_2
        SET @lesser = @p_1
    ELSE 
        SET @lesser = @p_2
    RETURN @lesser  
END

有可能吗?

1 个答案:

答案 0 :(得分:1)

您可以使用sql_variant

功能

CREATE FUNCTION fn_Min(@p_1 sql_variant, @p_2 sql_variant)
RETURNS sql_variant
AS
BEGIN
    DECLARE @lesser sql_variant
    IF @p_1 <= @p_2
        SET @lesser = @p_1
    ELSE 
        SET @lesser = @p_2
    RETURN @lesser  
END

呼叫

SELECT dbo.fn_Min(CAST('3:00 AM' AS TIME),CAST('11:00 AM' AS TIME))
SELECT dbo.fn_Min(5,6)