커서문에서 FOR LOOP 문을 쓰면더 간단한 코드를 작성할수 있다.
커서를 열고 닫을 필요없이 또한 FETCH과정또한 필요없다.
FOR 문에서 IN 키워드 이후에 CURSUR을 두면 SELECT문을 두었을때와 같이 반환된 레코드가 있는 동안
LOOP를 돌기 떄문이다.
일단 앞포스팅에서 이용한 CURSOR 에서 사용한 예제를 FOR LOOP 문으로 바꾸어 보자.
http://blog.daum.net/kwonmc/5918845 - CURSOR 예제
CREATE OR REPLACE PROCEDURE INFO_HIREDATE
(P_YEAR IN CHAR)
IS
CURSOR EMP_CUR IS
SELECT FIRST_NAME, jOB_ID
FROM EMPLOYEES
WHERE TO_CHAR(HIRE_DATE,'YYYY')=P_YEAR;
BEGIN
DBMS_OUTPUT.PUT_LINE( LPAD('-', 20, '-') );
DBMS_OUTPUT.PUT_LINE('이름 직위');
DBMS_OUTPUT.PUT_LINE( LPAD('-', 20, '-') );
FOR i IN EMP_CUR LOOP
-- IN뒤에 커서가 SELECT문과 같기 때문에 FETCH될 데이터가
-- 있는 동안은 계속 LOOP가 실행된다.
DBMS_OUTPUT.PUT_LINE(i.FIRST_NAME||' ' ||i.JOB_ID);
END LOOP;
END;
FOR 문에서 IN 후에 SELECT 문이나 CURSOR 를 둔다면 그 쿼리문의 결과값들 모두를 출력하게 됨을
기억하자.더 간단한 코드를 작성할수 있다.
'오라클 10g' 카테고리의 다른 글
PL/SQL - FOR UPDATE (0) | 2010.12.13 |
---|---|
PL/SQL - 사용자 정의 함수 (0) | 2010.12.12 |
PL/SQL 커서 (0) | 2010.12.12 |
PL/SQL - 배열 (0) | 2010.12.09 |
PL/SQL - 중첩 LOOP (0) | 2010.12.09 |