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 |