IF EXISTS ( SELECT * 
            FROM   sysobjects 
            WHERE  id = object_id(N'dbo.CF_IsNumeric') 
                   and type = 'FN')
BEGIN
    DROP FUNCTION dbo.CF_IsNumeric
END
GO

CREATE FUNCTION [dbo].[CF_IsNumeric](@pDato VARCHAR(MAX))
RETURNS TINYINT
AS 
BEGIN
DECLARE @Flag_Es_Numerico	TINYINT
DECLARE @longitud			INT
DECLARE @posicion			INT

SET @Flag_Es_Numerico = 1

SET @longitud = LEN(@pDato)

SET @posicion = 0

WHILE @posicion < @longitud
BEGIN
	SET @posicion = @posicion + 1
	
	IF(ISNUMERIC(SUBSTRING(@pDato, @posicion, 1)) = 0)
	BEGIN
		SET @Flag_Es_Numerico = 0
	END
END
  
RETURN @Flag_Es_Numerico
END