예제 1
요구사항: 부서 이름을 입력하여 해당 부서에 속한 사원의 정보(사원 아이디, 사원 이름)를 얻습니다. 부서 이름을 입력할 떄 대소문자의 구분이 필요하지 않습니다.
EXEC emp_info('it')
SET SERVEROUTPUT ON
CREATE OR REPLACE PROCEDURE emp_info ( p_dept departments.department_name%TYPE)
IS
CURSOR emp_cur IS
SELECT employee_id, last_name
FROM employees e JOIN departments d
ON d.department_id = e.department_id
WHERE department_name LIKE UPPER(p_dept);
l_emp_id employees.employee_id%TYPE;
l_emp_name employees.last_name%TYPE;
BEGIN
OPEN emp_cur;
LOOP
FETCH emp_cur INTO l_emp_id, l_emp_name;
EXIT WHEN emp_cur%NOTFOUND;
DBMS_OUTPUT.PUT_LINE(l_emp_id || '' || l_emp_name);
END LOOP;
CLOSE emp_cur;
END emp_info;
예제 2
요구사항: 부서 이름을 입력받으면 해당 부서의 사원에 대해 급여가 많은 순으로 정보를 제공한다.
부서의 전체 인원에 대한 정보를 함께 제시한다.
EXEC emp_salary_info('IT')
CREATE OR REPLACE PROCEDURE emp_salary_info (p_dept departments.department_name%TYPE)
IS
CURSOR emp_cur IS
SELECT employee_id, last_name, salary
FROM employees e JOIN departments d
ON d.department_id = e.department_id
WHERE department_name LIKE UPPER(p_dept)
ORDER BY salary DESC;
l_emp employees%ROWTYPE;
BEGIN
OPEN emp_cur;
LOOP
FETCH emp_cur INTO l_emp.employee_id, l_emp.last_name, l_emp.salary;
EXIT WHEN emp_cur%NOTFOUND;
DBMS_OUTPUT.PUT_LINE(l_emp.employee_id || ', ' || l_emp.last_name || ', ' || l_emp-.salary);
END LOOP;
DBMS_OUTPUT.PUT_LINE('Total Employee Number of' || p_dept || 'department : ' || emp_cur%ROWCOUNT);
CLOSE emp_cur;
END emp_salary_info;
예제3
요구사항 : 특정 숫자를 입력하면 부서에 소속한 사원의 수가 입력된 숫자 이상일 때 해당 부서와 소속 사원의 전체 수를 제시
EXEC count_dept(10)
CREATE OR REPLACE PROCEDURE count_dept ( p_num IN NUMBER)
IS
CURSOR c1 IS
SELECT t1.department_id, department_name, staff
FROM departments t1,
(
SELECT department_id, COUNT(*) as staff
FROM employees
GROUP BY department_id
)t2
WHERE t1.department_id = t2.department_id
AND staff >= p_num;
BEGIN
FOR dept IN c1
LOOP
dbms_output.put_line(dept.department_name || 'Department has '|| dept.staff|| ' staff');
END LOOP;
END count_dept;
'DB > Oracle' 카테고리의 다른 글
[Oracle] EXCEPTION(예외처리) 예제 (0) | 2022.08.22 |
---|---|
[Oracle] ORA-06550 & EXCEPTION(예외처리) (0) | 2022.08.16 |
[Oracle] 커서(Cursor) (0) | 2022.08.10 |
[Oracle] 테이블 생성 & 테이블,컬럼 Comment & 테이블 기본키 추가 & ORA-02437 & 테이블 컬럼타입 변경 (0) | 2022.08.02 |
[Oracle] 조건문 IF, 제어문 LOOP, 제어문 FOR (0) | 2022.08.02 |