1)업무를 입력하여 해당 업무를 수행하는 사원들의 사원번호,이름,급여,업무를 출력하시오.
프로시저명 : job_info
create or replace procedure job_info(p_job emp.job%type)
is
--커서 선언
cursor emp_cur is
SELECT empno,ename,sal,job
FROM emp
WHERE job = p_job;
--변수 선언
l_emp emp%rowtype;
begin
open emp_cur;
loop
fetch emp_cur into l_emp.empno,l_emp.ename,
l_emp.sal,l_emp.job;
exit when emp_cur%notfound;
dbms_output.put_line(l_emp.empno || ','
|| l_emp.ename || ',' || l_emp.sal || ',' || l_emp.job);
end loop;
close emp_cur;
end;
exec job_info('MANAGER');
2)사원번호와 새 업무를 입력하면 emp 테이블의 해당 사원의 업무를 갱신할 수 있는 프로시저를 작성하시오.
프로시저명 : change_job
create or replace procedure change_job(e_no emp.empno%type,
e_job emp.job%type)
is
begin
UPDATE emp SET job=e_job WHERE empno=e_no;
COMMIT;
exception when others then
dbms_output.put_line(e_no || ' update is failed');
ROLLBACK;
end;
exec change_job(7369,'DRIVER');
3)부서이름을 입력받으면 해당 부서의 사원에 대해 급여가 많은 순(sal DESC)으로 정보(사원번호,이름,급여)를 DBMS 출력
프로시저명 : emp_salary_info
create or replace procedure emp_salary_info(
p_dept dept.dname%type)
is
--커서 선언
cursor emp_cur is
SELECT empno,ename,sal
FROM emp e JOIN dept d
ON e.deptno = d.deptno
WHERE d.dname = UPPER(p_dept)
ORDER BY sal DESC;
--변수 선언
l_emp emp%rowtype;
begin
open emp_cur;
loop
fetch emp_cur into l_emp.empno,l_emp.ename,l_emp.sal;
exit when emp_cur%notfound;
dbms_output.put_line(l_emp.empno || ','
|| l_emp.ename || ',' || l_emp.sal);
end loop;
close emp_cur;
end;
exec emp_salary_info('ACCOUNTING');