Que sabes de GNU/Linux?

martes, 8 de diciembre de 2009

Postgresql - Validar que la entrada sea solo números

-- Function: sgl_solo_numeros(character varying)

-- DROP FUNCTION sgl_solo_numeros(character varying);

CREATE OR REPLACE FUNCTION sgl_solo_numeros(s_value character varying)
RETURNS integer AS
$BODY$
DECLARE i_pasada INTEGER;
DECLARE i_length_char INTEGER;
DECLARE i_error INTEGER;
DECLARE s_error VARCHAR(255);
DECLARE s_subcadena VARCHAR(2);
BEGIN

i_error := 0;
IF (s_value IS NULL) OR (s_value = '') THEN
s_error := 'No se ingreso ningún valor para validar';
RAISE WARNING '%',s_error;
i_error := 22500;
RETURN i_error;
END IF;

/*
Determinamos si la cadena tiene un tamaño relativo
*/

i_length_char := char_length(s_value);

IF (i_length_char <= 0) Then
s_error := 'La cadena ingresada no posee valores';
RAISE WARNING '%',s_error;
i_error := 22600;
RETURN i_error;
End If;

i_pasada := 1;
WHILE i_pasada <= i_length_char LOOP
s_subcadena := substr(s_value,i_pasada,1);
IF (ascii(s_subcadena) < 48) OR (ascii(s_subcadena) > 57) THEN
RAISE WARNING '%',s_subcadena;
i_error = i_pasada; /*no posee solo numeros*/
RETURN i_error;
END IF;
i_pasada := i_pasada +1;
END LOOP;

RETURN i_error;
END
$BODY$
LANGUAGE 'plpgsql' VOLATILE
COST 100;
ALTER FUNCTION sgl_solo_numeros(character varying) OWNER TO <>;

No hay comentarios:

Publicar un comentario en la entrada