Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Create a Function with Generic Type

I am using this syntax at various places,

CASE WHEN [dbo].[IsNullOrWhiteSpace](@MyColumn) = 1 OR [dbo].[IsNullOrWhiteSpace](Name) = 0 THEN [Name] ELSE @MyColumn END

The only change is Name and @MyColumn. But MyColumn can be any type. Any way to create a function that do this stuff but with genric type. This is what I am looking,

ALTER FUNCTION [dbo].[GetParameterOrPreviousValue]
(
    @Value1 AnyType
    ,@Value2 AnyType
)
RETURNS AnyType
AS
BEGIN

    RETURN CASE WHEN [dbo].[IsNullOrWhiteSpace](@Value1) = 1 OR [dbo].[IsNullOrWhiteSpace](@Value2) = 0 THEN @Value2 ELSE @Value1 END;

END

See the AnyType.

Update

Here is my IsNullOrEmpty,

ALTER FUNCTION [dbo].[IsNullOrWhiteSpace]
                (
                    @Value nvarchar(MAX)
                )
                RETURNS bit
                AS
                BEGIN

                    RETURN CASE WHEN LTRIM(RTRIM(ISNULL(@Value,''))) = '' THEN 1 ELSE 0 END;

                END

and I am using this in a UPDATE statement,

UPDATE T SET    [Name] = dbo.GetParameterOrPreviousValue(@Name, Name) 
                ,[Gender] = dbo.GetParameterOrPreviousValue(@Gender, Gender)
        ,[Location] = dbo.GetParameterOrPreviousValue(@Location, Location)
        ,[RawData] = dbo.GetParameterOrPreviousValue(@RawData, RawData)
like image 205
Imran Qadir Baksh - Baloch Avatar asked Sep 19 '25 03:09

Imran Qadir Baksh - Baloch


1 Answers

I guess you can use sql_variant. Also what about [dbo].[IsNullOrWhiteSpace]? Does it takes a String type?

like image 113
valex Avatar answered Sep 20 '25 20:09

valex