alexandria-plsql-utils/ora/validation_util_pkg.pkb
2015-02-20 19:43:42 +01:00

129 lines
2.8 KiB
Plaintext
Executable File

create or replace package body validation_util_pkg
as
/*
Purpose: Package handles validations
Remarks:
Who Date Description
------ ---------- --------------------------------
MBR 23.10.2011 Created
*/
function is_valid_email (p_value in varchar2) return boolean
as
l_dot_pos number;
l_at_pos number;
l_str_length number;
l_returnvalue boolean := true;
begin
/*
Purpose: returns true if value is valid email address
Remarks: Written by Anil Passi, see http://oracle.anilpassi.com/validate-email-pl-sql-2.html
Who Date Description
------ ---------- --------------------------------
MBR 23.10.2011 Created
MBR 26.10.2011 Added check against multiple at signs
*/
if p_value is null then
l_returnvalue := false;
else
l_dot_pos := instr(p_value, '.');
l_at_pos := instr(p_value, '@');
l_str_length := length(p_value);
if ((l_dot_pos = 0) or (l_at_pos = 0) or (l_dot_pos = l_at_pos + 1) or (l_at_pos = 1) or (l_at_pos = l_str_length) or (l_dot_pos = l_str_length)) then
l_returnvalue := false;
end if;
if instr(substr(p_value, l_at_pos), '.') = 0 then
l_returnvalue := false;
end if;
if instr(substr(p_value, l_at_pos + 1), '@') > 0 then
l_returnvalue := false;
end if;
end if;
return l_returnvalue;
end is_valid_email;
function is_valid_email2 (p_value in varchar2) return boolean
as
l_value varchar2(32000);
l_returnvalue boolean;
begin
/*
Purpose: returns true if value is valid email address
Remarks:
Who Date Description
------ ---------- --------------------------------
MBR 23.10.2011 Created
*/
if p_value is null then
l_returnvalue := false;
else
l_returnvalue := regexp_replace(p_value, regexp_util_pkg.g_exp_email_addresses, null) is null;
end if;
return l_returnvalue;
end is_valid_email2;
function is_valid_email_list (p_value in varchar2) return boolean
as
l_returnvalue boolean;
begin
/*
Purpose: returns true if value is valid email address list
Remarks: see http://application-express-blog.e-dba.com/?p=158 for the regular expression used
Who Date Description
------ ---------- --------------------------------
MBR 23.10.2011 Created
*/
if p_value is null then
l_returnvalue := false;
else
l_returnvalue := regexp_replace(p_value, regexp_util_pkg.g_exp_email_address_list, null) is null;
end if;
return l_returnvalue;
end is_valid_email_list;
end validation_util_pkg;
/