[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;