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;