출처 http://www.gurubee.net/lecture/1066
Explicit Cursor 속성
%ISOPEN
- – 커서가 OPEN되어 있으면 TRUE
- – %ISOPEN속성을 이용하여 커서가 열려있는지 알 수 있다.
%NOTFOUND
- – 패치한 데이터가 행을 반환하지 않으면 TRUE
- – %NOTFOUND속성을 이용하여 루프를 종료 할 시점을 찾는다.
%FOUND
%ROWCOUNT
- – 현재까지 반환 된 모든 데이터 행의 수
- – %ROWCOUNT속성을 이용하여 정확한 숫자만큼의 행을 추출한다.
Explicit Cursor 속성 예제
SQL> CREATE OR REPLACE PROCEDURE AttrCursor_Test
IS
v_empno emp.empno%TYPE;
v_ename emp.ename%TYPE;
v_sal emp.sal%TYPE;
CURSOR emp_list IS
SELECT empno, ename, sal
FROM emp;
BEGIN
DBMS_OUTPUT.ENABLE;
OPEN emp_list;
LOOP
FETCH emp_list INTO v_empno, v_ename, v_sal;
-- 데이터를 찾지 못하면 빠져 나갑니다
EXIT WHEN emp_list%NOTFOUND;
END LOOP;
DBMS_OUTPUT.PUT_LINE('전체데이터 수 ' || emp_list%ROWCOUNT);
CLOSE emp_list;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('ERR MESSAGE : ' || SQLERRM);
END;
/
-- DBMS_OUTPUT.PUT_LINE을 출력하기 위해 사용
SQL> SET SERVEROUTPUT ON ;
-- 실행 결과
SQL> EXECUTE AttrCursor_Test;
전체데이터 수 15