jueves, abril 18, 2024

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

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;

 

Roy Rojas
Roy Rojashttp://www.dotnetcr.com
Con más de 20 años de experiencia en programación, experto en lenguajes .NET, VB, C#, ASP.NET, Xamarin, XCode, DBA en SQL Server. Creador de dotnetcr.com, sitio web para programadores en español. royrojas.com | dotnetcr.com | GitHub
Roy Rojas
Roy Rojashttp://www.dotnetcr.com
Con más de 20 años de experiencia en programación, experto en lenguajes .NET, VB, C#, ASP.NET, Xamarin, XCode, DBA en SQL Server. Creador de dotnetcr.com, sitio web para programadores en español. royrojas.com | dotnetcr.com | GitHub