문법
/*
※ 형식
if 조건1 then 실행문장1;
elsif 조건2 then 실행문장2;
elsif 조건3 then 실행문장3;
else 실행문장4;
end if; -- 반드시 end if를 넣어야 함. !!
*/
실습
create or replace function func_age_3 (p_jubun in varchar2)
return number
is
error_jubun exception;
v_gender_num varchar2(1) := substr(p_jubun, 7, 1);
v_year number(4);
v_age number(3);
begin
if length(p_jubun) != 13 then raise error_jubun;
end if;
if v_gender_num in('1','2') then v_year := 1900;
elsif v_gender_num in('3','4') then v_year := 2000;
else raise error_jubun;
end if;
if to_date (to_char(sysdate, 'yyyy') || substr(p_jubun, 3, 4), 'yyyymmdd') - to_date (to_char(sysdate, 'yyyymmdd'), 'yyyymmdd') > 0
then v_age := extract(year from sysdate) - (v_year + to_number(substr(p_jubun, 1, 2))) - 1;
else v_age := extract(year from sysdate) - (v_year + to_number(substr(p_jubun, 1, 2)));
end if;
return v_age;
exception
when error_jubun then
raise_application_error(-20001, '>> 올바르지 않은 주민번호입니다. <<');
end func_age_3;