Oracle PL/SQL 강좌
암시적 커서(Implicit Cursor) 15 6 81,644

by 김정식 암시적 커서 IMPLICIT CURSOR SQL%ROWCOUNT SQL%FOUND SQL%NOTFOUND SQL%ISOPEN PL/SQL CURSOR [2002.01.20]


암시적 커서(Implicit Cursor)란?

  암시적인 커서는 오라클이나 PL/SQL실행 메커니즘에 의해 처리되는 SQL문장이 처리되는 곳에 대한 익명의 주소이다.

  오라클 데이터베이스에서 실행되는 모든 SQL문장은 암시적인 커서가 생성되며, 커서 속성을 사용 할 수 있다.

  암시적 커서는 SQL 문이 실행되는 순간 자동으로 OPEN과 CLOSE를 실행 한다.

암시적 커서의 속성
  • - SQL%ROWCOUNT : 해당 SQL 문에 영향을 받는 행의 수
  • - SQL%FOUND : 해당 SQL 영향을 받는 행의 수가 한 개 이상일 경우 TRUE
  • - SQL%NOTFOUND : 해당 SQL 문에 영향을 받는 행의 수가 없을 경우 TRUE
  • - SQL%ISOPEN : 항상 FALSE, 암시적 커서가 열려 있는지의 여부 검색

암시적 커서(Implicit Cursor) 예제

 
SQL> CREATE OR REPLACE PROCEDURE Implicit_Cursor
        (p_empno IN emp.empno%TYPE)

    IS

        v_sal  emp.sal%TYPE;
        v_update_row NUMBER;

    BEGIN

        SELECT sal
        INTO v_sal
        FROM emp
        WHERE empno = p_empno;

        -- 검색된 데이터가 있을경우
        IF  SQL%FOUND THEN     
            DBMS_OUTPUT.PUT_LINE('검색한 데이터가 존재합니다 : '||v_sal);
        END IF;

        UPDATE emp
        SET sal = sal*1.1
        WHERE empno = p_empno;

        -- 수정한 데이터의 카운트를 변수에 저장
        v_update_row := SQL%ROWCOUNT;
        DBMS_OUTPUT.PUT_LINE('급여가 인상된 사원 수 : '|| v_update_row);
        
        EXCEPTION    
           WHEN   NO_DATA_FOUND  THEN  
           DBMS_OUTPUT.PUT_LINE(' 검색한 데이터가 없네요... ');
        
    END;
    /
 
-- DBMS_OUTPUT.PUT_LINE을 출력하기 위해 사용
SQL> SET SERVEROUTPUT ON ;  

-- 프로시저 실행
SQL> EXECUTE Implicit_Cursor(7369);

검색한 데이터가 존재합니다 : 880
급여가 인상된 사원 수 : 1
        

- 강좌 URL : http://www.gurubee.net/lecture/1062

- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^

- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.

by 삥글삥글 [2007.05.07 15:33:15]
검색한 데이터가 없을 경우는 어떠한 작업을 할런지요??

by 쩡 [2007.07.09 17:31:43]
UPDATE나 DELETE 수행전에 데이터가 존재하는지 조회 후 수행하는 경우가 있는데 이때, 조회해서 SQL%NOTFOUND 일 경우 EXCEPTION 처리를 할 수 있습니다.

by 디스타임 [2007.11.08 17:50:52]
강좌 재미있게 보고 있습니다. 감사합니다 ^^

by 김윤경 [2007.11.09 10:31:40]
이제야 커서에 대해 조금 알 것 같아요;

by 이경훈 [2007.12.06 16:19:16]
강좌 재밌게 보고 있습니다.

by idmakeh [2008.11.10 16:13:47]
검색된 데이터 없음 NO_DATA_FOuND exception 나오지 않나염??
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입