1007 과제
입력받은 부서번호로 사원번호, 사원명, 연봉, 입사일을 조회하라
단, 보너스는 부서번호별로 차등 지급한다.(10 - 연봉의 10%, 20 - 20%, 30 - 15%)
커서로 뽑아온 값을 가지고 루프안에서 if로 계산하라
해당 부서가 없다면 '부서없음'을 출력하고 입력받은 부서번호가 있을 때에만 커서를 사용하여 출력하라.
부서번호가 입력되지 않으면 '부서번호 필수 입력'을 출력하라
accept deptno prompt '부서번호 : '
declare
i_deptno emp.deptno%type := nvl('&deptno',-1);
cursor cur_emp is
select empno, ename, sal, hiredate
from emp
where deptno = i_deptno;
empno emp.empno%type;
ename emp.ename%type;
sal emp.sal%type;
hiredate emp.hiredate%type;
begin
if i_deptno = -1 then
dbms_output.put_line('부서번호 필수 입력');
else
select deptno
into i_deptno
from dept
where deptno = i_deptno;
if cur_emp%isopen then
close cur_emp;
end if;
open cur_emp;
loop
fetch cur_emp into empno, ename, sal, hiredate;
exit when(cur_emp%notfound);
if i_deptno = 10 then
sal := sal+(sal*0.1);
elsif i_deptno = 20 then
sal := sal+(sal*0.2);
elsif i_deptno = 30 then
sal := sal+(sal*0.15);
end if;
dbms_output.put_line('사원번호 : '|| empno || ', 사원명 : ' || ename || ', 연봉 : ' || sal || ', 입사일 : ' || hiredate);
end loop;
if cur_emp%rowcount = 0 then
dbms_output.put_line('해당 부서 번호의 사원 데이터가 없습니다.');
end if;
close cur_emp;
end if;
exception
when no_data_found then
dbms_output.put_line('부서 없음');
when others then
dbms_output.put_line('개발자가 인지하지 못한 에러입니다.');
end;
/
'예전 포스팅 모음' 카테고리의 다른 글
[DB] pl/sql 문 예제(이메일 검증, 주민등록번호 유효성 검증) (0) | 2014.10.08 |
---|---|
[DB] Cursor For Loop문 활용하기 (0) | 2014.10.08 |
[DB] PL/SQL, Exception Handling (0) | 2014.10.07 |
[DB] PL/SQL, 커서 (0) | 2014.10.06 |
[DB] 계정, PL(Procedure Language)/SQL (0) | 2014.10.02 |