DotNetcr.com
Si deseas hacer un intercambio de links con DotNetcr, escríbenos aquí
Recibe las actualizaciones vía RSS
Te invitamos a unirte en nuestras redes
   http://www.facebook.com/DotNetcr
   http://www.twitter.com/dotnetcr

Función que valida un correo electrónico en Oracle PL/SQL

Por royrojas | 7/9/2005 | Visitas 7,386 | Voto 5.00
Para validar algún correo electrónico en algún momento, podemos tener una función que nos retorne si es válido o no.
Categorías : SQL Server
CREATE OR REPLACE FUNCTION
EMAILVALIDATE_V1(email VARCHAR2) RETURN NUMBER IS

t_valid NUMBER(1);
t_totallen NUMBER(2);
t_counter NUMBER(2):=0;
t_atpos NUMBER(2):= 1;
i NUMBER(2) := 1;
t_pointpos NUMBER(2):= 1;

mail_ch VARCHAR2(1);

BEGIN

t_totallen := LENGTH(email);
t_counter := t_totallen;
i := 1;
t_valid := 1;


-- Validamos la longitud del correo, no puede ser vacío
IF LENGTH(ltrim(rtrim(email))) = 0 THEN
t_valid := 0;
ELSE
--------------------------------------


--Valida que no contenga caracteres inválidos en un correo
t_counter := t_totallen;

WHILE t_counter > 0
LOOP
mail_ch := substr(email,i,1);
i := i+1;
t_counter := t_counter -1;

IF mail_ch IN (
' ','!','#','$','%',
'^','&','*','(',')',
'-','','"',
'+','|','{','}','[',
']',':','>','<','?',
'/','\','=') THEN
t_valid := 0;
EXIT;
END IF;

END LOOP;
---------------------------------------


--Valida que no tenga mas de un @
t_atpos := instr(email,'@',1,2) ;

IF t_atpos > 1 then
t_valid := 0;
END IF;
---------------------------------------


--Valida que contenga solo un @
t_atpos := instr(email,'@',1);

IF t_atpos IN (0,1) THEN
t_valid := 0;
END IF;
---------------------------------------


--Validamos que tenga por lo menos un punto (.)
t_pointpos := instr(email,'.',1) ;

IF t_pointpos IN (0,1) THEN
t_valid := 0;
END IF;
----------------------------------------

END IF;

RETURN t_valid;

END;
Area de Comentarios
Por Anónimo - Fecha: 2007/05/30 04:11 PM
Hola:

Lo trate de poner en una rutina que tengo y no me valida el correo, además de que en la pantalla solo muestra 0 si es un correo no valido y 1 si es un correo valido, pero al llenar mi campo de correo no me marca si es valido o invalido simplemente lo deja pasar
Por Anónimo - Fecha: 2007/11/04 09:47 PM
el codigo corre bien, se agradece el aporte.
para los mas principiantes como yo, hay que cambiar unas minimas cosas
saludos
Por Anónimo - Fecha: 2007/11/21 04:03 PM
que buen dato para validar el email
Por Anónimo - Fecha: 2010/09/27 09:46 PM
Excelente aportacion ya lo implemente y funciona bastante bien.
Por Anónimo - Fecha: 2010/09/30 06:38 PM
hola como llamo ala funcion
Por royrojas - Fecha: 2010/10/01 10:49 AM
para llamar a la funcion lo haces indicandole el owner

ejemplo
dbo.EMAILVALIDATE_V1('micorreo@mail.com')

select dbo.EMAILVALIDATE_V1('micorreo@mail.com')
Por Anónimo - Fecha: 2010/10/04 06:22 PM
lo llamo desde un disparador when_validate_item
como seria para llamar esa funcion
te agradezco royrojas o el que me pueda ayudar
Por royrojas - Fecha: 2010/10/04 09:57 PM
no me quedo muy claro, podrias extender tu pregunta
Por Anónimo - Fecha: 2010/10/05 01:11 AM
soy nuevo en esto no se como llamo la funcion lo que quiro es validar es un campo email que el usuario digita antes de guardarlo, si esta correcta la estructura del email que lo deje gauradar si no que me pida la estructura que es
Por Anónimo - Fecha: 2012/04/26 08:57 AM
?:This can be my third visit to this weblog. I am conerdsiing about starting a completely new weblog within the same category. Your website provided me with suggestions to function with. (Don't worry, I won't be copying you ) You have completed a great job.
Por Anónimo - Fecha: 2012/04/27 08:46 AM
Y8hpXo , [url=http://enesrqyaeyje.com/]enesrqyaeyje[/url], [link=http://hsijebicouxi.com/]hsijebicouxi[/link], http://tskbjwcnyxin.com/
Por Anónimo - Fecha: 2012/04/28 11:59 PM
IktTQA , [url=http://rucgrcpmsrku.com/]rucgrcpmsrku[/url], [link=http://snmruatggrvt.com/]snmruatggrvt[/link], http://dnmguvvwvxmn.com/
Ingrese su Comentario
Comentario
Para poder votar debe estar registrado en DotNetcr.com
Solo queda registrado el primer voto enviado
Voto


Últimos Recursos
thesondemon
ibarra
dsevic
Eur
jota
juanjoguardiola
PER 237
MEX 236
CRI 185
COL 117
ESP 104
ARG 87