LynnXe
LynnXe

Reputation: 57

Create function that can receive arguments of multiple types

I need to create function that will find a lesser of two values. It should receive either INT or TIME type arguments. Something of this structure:

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

Is it possible?

Upvotes: 0

Views: 461

Answers (1)

wiretext
wiretext

Reputation: 3342

you can use sql_variant

Function

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

Call

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

Upvotes: 1

Related Questions