MapleStory Finger Point Cute Line Smiley Blinking Hello Kitty Angel MapleStory Finger Point

💎 DataBase/💎 SQL-PL,SQL

˚₊✩‧₊ [PL/SQL] 커서 CURSOR ˚₊✩‧₊

HYEJU01 2024. 6. 27. 23:40

 

[CURSOR 커서]
질의 수행결과가 여러행이 나온 결과 처리할때 사용

여러 행을 처리할 수 있게 해준다.
CURSOR 루프하면서 읽어준다.

[ 커서 선언]
CURSOR 커서이름 IS SELECT문장;

[커서 열기]
OPEN 커서이름;

[커서 데이터 읽기 (LOOP end 반복문)]
FETCH 커서이름 INTO 저장할 로컬변수

[커서 닫기]
CLOSE 커서이름 

[커서 속성]
- %FOUND -- PL/SQL코드가 마지막으로 얻은 커서의 결과 set에 레코드가 있다면 참.
- %NOTFOUND -- %FOUND의 반대
- %ROWCOUNT -- 커서에서 얻은 레코드수 반환
- %ISOPEN -- 커서가 열렸고 아직 닫히지 않은 상태라면 참

 

DECLARE
    NM VARCHAR2(50);
    SALARY NUMBER;
    CURSOR c_name IS SELECT  FIRST_NAME, SALARY FROM EMPLOYEES WHERE JOB_ID = 'IT_PROG'; 
    -- 1.커서선언.
BEGIN
    OPEN c_name; --2. 커서열기
    DBMS_OUTPUT.PUT_LINE('=============================');
    LOOP
        FETCH c_name INTO NM, SALARY;--3. 커서로부터 데이터 읽기
        EXIT WHEN c_name%NOTFOUND; --커서에서 데이터를 찾을수 없으면 반복문 빠져나가라.
        DBMS_OUTPUT.PUT_LINE('IT_PROG의 이름은 ' || NM);
        DBMS_OUTPUT.PUT_LINE('IT_PROG의 급여는 ' || SALARY);
    END LOOP;
    DBMS_OUTPUT.PUT_LINE('결과 레코드수 => ' || c_name%ROWCOUNT);
    CLOSE c_name ;--4. 커서 닫기
END;