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 8,209 | 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/
Por Anónimo - Fecha: 2015/03/04 12:07 PM
CREATE OR REPLACE FUNCTION fn_valida_mail(email VARCHAR2,
error OUT VARCHAR) 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);
x_variable NUMBER(2) := 0;

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(TRIM(email)) = 0 OR (email IS NULL) THEN
t_valid := 0;
error := 'Atención. Debe Ingredar Email';
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;
error := 'Atención. No puede Ingresar ninguno de estos carateres especiales ' ||
'!,#,$,%,^,&,*,(,),-,'',",+,|,{,},[,],:,>,<,?,/,\,= o espacios en blanco';
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;
error := 'Atención. No puede Ingresar mas de una @';
END IF;
--Valida que contenga solo un @
t_atpos := instr(email, '@', 1);
IF t_atpos IN (0, 1) THEN
t_valid := 0;
error := 'Atención. El mail debe contener @ o Datos antes de la @';
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;
error := 'Atención. El mail debe contener un . o no puede comenzar con .';
ELSE
-- valida que despues de la @este un punto
x_variable := instr(substr(email, instr(email, '@', 1)), '.', 1);
IF x_variable IN (0) THEN
t_valid := 0;
error := 'Atención. El mail debe tener un . Despues de la @';
END IF;
END IF;

t_pointpos := instr(email, '', 1);
IF t_pointpos IN (0, 1) THEN
t_valid := 0;
error := 'Atención. El mail no puede contener espacios.';
END IF;
END IF;
RETURN t_valid;
END;
Por Anónimo - Fecha: 2015/07/19 06:32 AM
Hi Denes,I've recently began wkoirng with ApEx here at our company (so I'm still learning at the moment) and I came across this post of yours while browsing ApEx blogs.Isn't it easier to just concatenate your :P_ITEM variables in your query at runtime instead of transforming them.The way I used it to build my collection was to just concatenate the query like this (this is just a little code from the where, the full query is rather big): ...dh.doccode not like ''DISPERSE'' and dh.cmpcode = ''' || to_char(:P2_SEARCH_COMPANY) ||''' and e.code like ''' || to_char(:P2_SEARCH_FILE) || ''' and dl.el2 like ''40%'' GROUP BY...It seems to work fine this way around (you just need to escape your ' with another ' in the query).Greetz and love your blog,Camstra
Por Anónimo - Fecha: 2015/07/21 01:42 PM
Hi Jack,Often the error 500 can be shown because you've not got IIS crgfinuoed to display detailed error messages. I don't know your specific hosting/server configuration, but this page may help: . It's not specific to Godaddy, so just follow their examples. http://xexpzpog.com [url=http://dmwkfp.com]dmwkfp[/url] [link=http://rynfzdwhdvu.com]rynfzdwhdvu[/link]
Ingrese su Comentario
Comentario
Para poder votar debe estar registrado en DotNetcr.com
Solo queda registrado el primer voto enviado
Voto


Últimos Recursos
ClaudioM
natii_18
thesondemon
ibarra
dsevic
Eur
PER 237
MEX 236
CRI 186
COL 117
ESP 104
ARG 88