오라클 10g

PL/SQL - FOR LOOP 커서문

무니버 2010. 12. 12. 14:00

 

 

 

커서문에서 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