Home Forums SQL Server 2008 T-SQL (SS2K8) How to use values keyword as parameter of a function RE: How to use values keyword as parameter of a function

  • OK, this is a skeleton and would need editing to include however many params that you want to go in there.

    IF object_id('tempdb..Equal') IS NOT NULL

    BEGIN

    DROP FUNCTION Equal;

    END;

    GO

    CREATE FUNCTION Equal (

    @XML XML

    )

    RETURNS VARCHAR(5) AS

    BEGIN

    DECLARE @Return VARCHAR(5);

    SELECT @Return = CASE WHEN MIN(parm) = MAX(parm) THEN 'True' ELSE 'False' END

    FROM (SELECT [param]

    FROM (SELECT

    Tbl.Col.value('p1[1]', 'VARCHAR(MAX)'),

    Tbl.Col.value('p2[1]', 'VARCHAR(MAX)'),

    Tbl.Col.value('p3[1]', 'VARCHAR(MAX)'),

    Tbl.Col.value('p4[1]', 'VARCHAR(MAX)'),

    Tbl.Col.value('p5[1]', 'VARCHAR(MAX)'),

    Tbl.Col.value('p6[1]', 'VARCHAR(MAX)')

    FROM @XML.nodes('//row') Tbl(Col)

    )a(p1,p2,p3,p4,p5,p6)

    UNPIVOT ([param] FOR value IN (p1,p2,p3,p4,p5,p6))up

    ) AS X2(parm);

    RETURN @Return;

    END

    If we then take a quick look at the usage with some sample data: -

    IF object_id('tempdb..#testEnvironment') IS NOT NULL

    BEGIN

    DROP TABLE #testEnvironment;

    END;

    --100 Random rows of data

    SELECT TOP 100 IDENTITY(INT,1,1) AS ID,

    (ABS(CHECKSUM(NEWID())) % 5) + 1 AS randomSmallInt1,

    (ABS(CHECKSUM(NEWID())) % 5) + 1 AS randomSmallInt2

    INTO #testEnvironment

    FROM master.dbo.syscolumns sc1, master.dbo.syscolumns sc2, master.dbo.syscolumns sc3;

    GO

    SELECT ID, randomSmallInt1, randomSmallInt2, dbo.Equal(val)

    FROM #testEnvironment

    CROSS APPLY (SELECT (SELECT randomSmallInt1 AS [p1], randomSmallInt2 AS [p2] FOR XML PATH('row'),TYPE))a(val);


    Forever trying to learn
    My blog - http://www.cadavre.co.uk/
    For better, quicker answers on T-SQL questions, click on the following...http://www.sqlservercentral.com/articles/Best+Practices/61537/
    For better, quicker answers on SQL Server performance related questions, click on the following...http://www.sqlservercentral.com/articles/SQLServerCentral/66909/