PROCEDURE MCIBE_VALID_EMAIL_ID (p_email_id VARCHAR2
,p_partner_enduser IN VARCHAR2
,p_err_code IN OUT NUMBER
,p_err_msg IN OUT VARCHAR2) IS
----Variable Declaration
l_first_char VARCHAR2(1);
l_char_in_id VARCHAR2(100);
l_check_dot VARCHAR2(1);
l_email_id VARCHAR2(100);
l_error_flag VARCHAR2(50) := 0;
l_position_of_at NUMBER := -1;
l_position_of_dot NUMBER := -1;
l_len NUMBER;
l_no_of_at NUMBER :=0;
BEGIN
--p_err_code := 0;
l_len := length(TRIM(p_email_id));
IF (l_len <> 0) THEN
----Read Id character by Character
FOR i IN 1 .. l_len
LOOP
l_char_in_id := SUBSTR(p_email_id,i,1);
---Position of the '@'
IF l_char_in_id = '@' THEN
l_position_of_at := i;
l_no_of_at := l_no_of_at +1;
END IF;
---position of the '.'
IF l_char_in_id = '.' THEN
l_position_of_dot := i;
END IF;
END LOOP;
l_first_char := substr(p_email_id,1,1);
---IF '@' or '.' doesn't exists at all
IF (l_position_of_at = -1 OR l_position_of_dot = -1 ) THEN
l_error_flag := 1;
----Check if there are multiple '@'
ELSIF l_no_of_at >1 AND l_error_flag = 0 THEN
l_error_flag := 1;
---Check if first letter is '@' or '.'
ELSIF l_first_char ='.' OR l_first_char = '@' THEN
l_error_flag := 1;
---Check if last letter is '@' or '.'
ELSIF (l_position_of_at = l_len OR l_position_of_dot = l_len) THEN
l_error_flag := 1;
---Check IF '@' never occurs before '.'
ELSIF (l_position_of_at > l_position_of_dot)THEN
l_error_flag := 1;
---Check if '@' occurs one position before '.'
ELSIF (l_position_of_dot - l_position_of_at) = 1 THEN
l_error_flag := 1;
ELSE
l_check_dot := SUBSTR(p_email_id,(l_position_of_at)-1,1) ;
IF(l_check_dot = '.')THEN
l_error_flag := 1;
ELSE
---Check if '.' comes right after '.'
l_check_dot := SUBSTR(p_email_id,(l_position_of_dot)-1,1) ;
IF(l_check_dot = '.')THEN
l_error_flag := 1;
END IF;
END IF;
END IF;
END IF;
----return 1 for error and 0 for no error
IF( l_error_flag = 1) THEN
p_err_code := 1;
p_err_msg := p_err_msg|| ' ; '||'Invalid ' || p_partner_enduser ||' contact Email Id';
END IF;
EXCEPTION
WHEN OTHERS THEN
p_err_code := 1;
p_err_msg := p_err_Msg || ' ; ' ||(SQLCODE || ' ' || substr(SQLERRM,1,100));
END MCIBE_VALID_EMAIL_ID;