본문 바로가기

ORACLE/PL/SQL

[문제]암시적 커서

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

-----------------------------------------------------------------------------

이 경우 만약 검색한 사원의 "급여"가 없을 경우 에러 메세지 출력하는 sql문은?




 

'ORACLE > PL/SQL' 카테고리의 다른 글

파라미터가 있는 커서 정리  (0) 2012.03.23
파라미터가 있는 커서  (0) 2012.03.22
오라클 커서(CURSOR)  (0) 2012.03.21
Loop / For Loop / While Loop  (0) 2012.03.20
PL/SQL 이란? (기본개념)  (0) 2012.03.17