Friday, January 10, 2014

[MSSQL][Library] Returns the date data type from its part (udf__GetDateByPart)

USE <Database_Name>
GO
IF OBJECT_ID(N'udf__GetDateByPart') IS NOT NULL
  DROP FUNCTION [udf__GetDateByPart]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- *****************************************************************************
-- Name         : udf__GetDateByPart
-- Author       : Chandra Gunawan
-- Date         : 30-Jul-13
-- Description  : Returns the date data type from its part (year, month, day)
-- Parameters   : 
--     @pYear  smallint  Input year (e.g.: 2012)
--     @pMonth tinyint   Input month (e.g.: 11)
--     @pDay   tinyint   Input day (e.g.: 3)
--
-- Usage Sample :
--   -------------------------------------------------
--   /* Return 11/3/2012 */
--   SELECT dbo.udf__GetDateByPart(2012, 11, 3)
--   -------------------------------------------------
--
-- Maintenance Log
-- =============================================================================
-- Date        ID     Description
-- -----------------------------------------------------------------------------
-- 25-Nov-08   chg    Initial Revision
-- *****************************************************************************
CREATE FUNCTION udf__GetDateByPart 
(
  @pYear   AS smallint,
  @pMonth  AS tinyint,
  @pDay    AS tinyint
)
RETURNS datetime
AS
BEGIN
  RETURN CONVERT(varchar(2), @pMonth) + '/' + CONVERT(varchar(2), @pDay) + '/' +
         CONVERT(varchar(4), @pYear)
END
GO
GRANT EXECUTE ON udf__GetDateByPart TO public
GO


[MSSQL][Library] Convert a delimited list of item into 2 columns table (udf__ListToPairColumns)

USE <Database_Name>
GO
IF OBJECT_ID(N'udf__ListToPairColumns') IS NOT NULL
  DROP FUNCTION udf__ListToPairColumns
GO
SET ANSI_NULLS OFF
GO
SET QUOTED_IDENTIFIER OFF
GO
-- *****************************************************************************
-- Name         : udf__ListToPairColumns
-- Author       : Chandra Gunawan
-- Date         : 02-Jun-2009
-- Description  : Convert a delimited list of item into 2 columns
-- Parameters   : 
--     @pList       vchr(8000)  Delimited list of item to split
--                                format: []
--                                example: A=1,B=2,C=3
--     @pDelimiter1 vchr(1)     Primary delimiter (bigger group)     (dlm1)
--     @pDelimiter2 vchr(1)     Secoundary delimiter (smaller group) (dlm2) 
--
-- Usage Sample :
--   -------------------------------------------------
--   SELECT * FROM dbo.udf__ListToPairColumns('a=1,b=2,c=3', ',', '=')
--   -------------------------------------------------
--
-- Maintenance Log
-- =============================================================================
-- Date        ID     Description
-- -----------------------------------------------------------------------------
-- 02-Jun-09   chg    Initial Version
-- *****************************************************************************
CREATE FUNCTION dbo.udf__ListToPairColumns 
( 
    @pList       varchar(8000),
    @pDelimiter1 varchar(1) = ',',
    @pDelimiter2 varchar(1) = '='
) 
RETURNS @pTable TABLE 
( 
    item_nm  varchar(100),
    item_val varchar(1000) 
) 
BEGIN  
  DECLARE @iSpot smallint,
          @cPar  varchar(8000),
          @cVal  varchar(8000),
          @cSql  varchar(8000)  

  IF ISNULL(@pDelimiter1, '') = '' SET @pDelimiter1 = ','
  IF ISNULL(@pDelimiter2, '') = '' SET @pDelimiter2 = '='

  WHILE @pList <> ''  
  BEGIN  
    SET @iSpot = CHARINDEX(@pDelimiter1, @pList)  
    IF @iSpot > 0  
    BEGIN  
      SET @cPar = LEFT(@pList, @iSpot-1)  
      SET @pList = RIGHT(@pList, LEN(@pList) - @iSpot)  
    END  
    ELSE BEGIN  
      SET @cPar = @pList  
      SET @pList = ''  
    END  
    
    SET @iSpot = CHARINDEX(@pDelimiter2, @cPar)  
    IF @iSpot > 0 
      SELECT @cVal = RIGHT(@cPar, LEN(@cPar) - @iSpot),
             @cPar = LEFT(@cPar, @iSpot - 1)
    ELSE 
      SET @cVal = ''
    
    INSERT @pTable SELECT @cPar, @cVal
  END  
  RETURN 
END 
GO
GRANT SELECT ON udf__ListToPairColumns TO public
GO

[MSSQL][Library] Get minimum value (udf__Minimum)

USE <Database_Name>
GO
IF OBJECT_ID(N'udf__Minimum') IS NOT NULL
  DROP FUNCTION [udf__Minimum]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- *****************************************************************************
-- Name         : udf__Minimum
-- Author       : Chandra Gunawan
-- Date         : 25-Nov-11
-- Description  : Returns the minimum value of 2 input value
-- Parameters   : 
--     @pValue1 money  First value to compare
--     @pValue2 money  Second value to compare
--
-- Usage Sample :
--   -------------------------------------------------
--   SELECT dbo.udf__Minimum(200, 100)
--   --> Result: 100
--   -------------------------------------------------
--
-- Maintenance Log
-- =============================================================================
-- Date        ID     Description
-- -----------------------------------------------------------------------------
-- 25-Nov-08   chg    Initial Revision
-- *****************************************************************************
CREATE FUNCTION udf__Minimum 
(
  @pValue1 AS money,
  @pValue2 AS money
)
RETURNS money
AS
BEGIN
  RETURN (CASE 
            WHEN @pValue1 IS NULL OR @pValue2 IS NULL THEN NULL
            WHEN @pValue1 < @pValue2 THEN @pValue1
            ELSE @pValue2
          END)
END
GO
GRANT EXECUTE ON udf__Minimum TO public
GO