[DB] pl/sql 문 예제(이메일 검증, 주민등록번호 유효성 검증)

1008 과제

 

1. 입력 받은 이메일의 유효성 검증을 하는 함수를 작성하라. 단, 유효성 검증 규칙으로는 '@, .'이 있어야한다.

ex)

select 함수명(이메일)

결과)

입력 이메일 : 유효 / 무효

 

=======================================================================

-- 이메일 검증 함수

create or replace function check_email(email varchar2) return varchar2

is

result varchar(6) := '무효';

begin           

if(instr(email,'@') > 0 and instr(substr(email,instr(email,'@')+1),'.') > 0) then

result := '유효';

end if;

 

return email || ' : ' || result;

end;

/

----------------------------------------------------------------------

set serveroutput on

set verify off

accept email prompt '이메일 유효성 검사 : '

declare

email varchar2(20) := nvl('&email','-1');

result varchar2(30);

begin

if email = '-1' then

dbms_output.put_line('이메일을 입력하세요.');

else

select check_email(email) into result from dual;                                      

dbms_output.put_line(result);

    end if;

end;

/

=======================================================================

 

 

2. 입력받은 주민등록번호의 유효성검사를 하는 함수를 작성하라.

단, 유효성 검사는 아래 알고리즘에 따라 작성한다.

1. 주민 번호의 각 자리에 2~9를 곱한 값을 모두 더한다. 이때 주민등록번호의 맨 마지막 자리 비교해야하는 검증비트로서 계산하지 않는다.

ex) 880101-123456(7:검증비트)

2. 모두 더한 값을 11로 나눈 나머지를 11로 빼준다.

3. 그 결과가 주민번호 끝자리와 일치하면 유효를 리턴하고 아니면 무효를 리턴한다.

 

=======================================================================

-- 주민등록번호 유효성 검증 함수

create or replace function check_ssn(ssn char) return varchar2is tmp char(14); sub_ssn char(13); total number := 0; i number := 0; code number := 1;begin tmp := substr(ssn, 1, instr(ssn,'-')-1)||substr(ssn, instr(ssn,'-')+1);
loop        i := i+1;        code := code+1;
sub_ssn := substr(tmp,i,1); if sub_ssn >= '0' and sub_ssn <= '9' then sub_ssn := substr(tmp,i,1); total := total + (sub_ssn*code); else sub_ssn := substr(tmp,i-1,1); total := total - sub_ssn*(code-1); exit; end if;
if code = 9 then code := 1; end if; end loop;   total := mod(total,11);    total := 11-total;
    if total = sub_ssn then    sub_ssn := '유효';    else    sub_ssn := '무효';    end if;        return sub_ssn;  end;/

=======================================================================

'예전 포스팅 모음' 카테고리의 다른 글

[java] Collection  (0) 2014.10.20
[DB] CRUD, Package, Trigger, 백업, 복구  (0) 2014.10.10
[DB] Cursor For Loop문 활용하기  (0) 2014.10.08
[DB ]pl/sql 문 문제 예제  (0) 2014.10.07
[DB] PL/SQL, Exception Handling  (0) 2014.10.07