/*
OPEN, FETCH, CLOSE, %FOUND등의 부분이 전혀 필요가 없다.
RPAD()는 2번째 매개변수에 명시한 숫자만큼 3번째 매개변수 글자를 채워준다.
*/
DECLARE CURSOR cur_emp IS
SELECT empno, ename, deptno FROM emp;
BEGIN
DECLARE row_count PLS_INTEGER;
BEGIN
DBMS_OUTPUT.PUT_LINE(RPAD('empno', 5, ' ') || ' ' ||
RPAD('ename', 10, ' ') || ' ' ||
RPAD('deptno', 6, ' '));
DBMS_OUTPUT.PUT_LINE('-----' || ' ' || '----------' || ' ' || '------');
<>
FOR cur IN cur_emp LOOP
--empno : 4, ename : 10, deptno : 2
DBMS_OUTPUT.PUT_LINE(RPAD(cur.empno, 4, ' ') || ' ' ||
RPAD(cur.ename, 10, ' ') || ' ' ||
RPAD(cur.deptno, 2, ' '));
row_count := cur_emp%ROWCOUNT; --For 루프에서는 묵시적으로 커서를 닫고 여는 작업을
--반복하기 때문에 이와같이 사용해야 한다.
END LOOP cursor_loop;
DBMS_OUTPUT.PUT_LINE('');
DBMS_OUTPUT.PUT_LINE('ROW COUNT : ' || row_count);
END;
END;
/
====
결과
====
empno ename deptno
----- ---------- ------
7369 SMITH 20
7499 ALLEN 30
7521 WARD 30
7566 JONES 20
7654 MARTIN 30
7698 BLAKE 30
7782 CLARK 10
7788 SCOTT 20
7839 KING 10
7844 TURNER 30
7876 ADAMS 20
7900 JAMES 30
7902 FORD 20
7934 MILLER 10
ROW COUNT : 14
PL/SQL 처리가 정상적으로 완료되었습니다.