[SQL] SQL 문법 실습_#5 (procedure)

SOSO·2022년 5월 22일
0

실습 

목록 보기
7/7
post-thumbnail

📌 SQL 문법 실습_#5

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');
profile
한다 열심히

0개의 댓글