sql 2009. 7. 1. 17:15

ORALCE] CURSOR 커서 사용하기


여러개의 로우를 하나의 컬럼으로 만들어서 반환하는 FUNCTION이다

아래 간략한 설명은 
SELECT 절에서 특정테이블 컬럼을 값을 인자로 넘겨서 해당인자를 조건으로하여
검색된 여러개의 로우를 LOOF를 돌면서 하나의 컬럼으로 만들고 해당 값을 반환하는 형식이다.

CREATE OR REPLACE FUNCTION   ABEEK2009.GET_SUSTNAME
    (IN_PROGRAM  IN VARCHAR2)   
    RETURN VARCHAR2
    IS
    NAMESTR VARCHAR2(1000);
   
    V_HAKKWACD ABK_PROGRAMGROUP.HAKKWACD%type;
    V_HAKKWANM ABK_PROGRAMGROUP.HAKKWANM%type;        

       CURSOR C1 IS
         SELECT HAKKWACD, HAKKWANM FROM ABK_PROGRAMGROUP
             WHERE PROGRAM = IN_PROGRAM
   ORDER BY HAKKWACD;   
    BEGIN    
  NAMESTR := ''; 
       
        OPEN C1;           
         LOOP    
   FETCH C1 INTO  V_HAKKWACD, V_HAKKWANM;
          
          EXIT WHEN C1%NOTFOUND;
                 IF NAMESTR IS NULL THEN
                    NAMESTR :=  V_HAKKWACD || ' ' || V_HAKKWANM ;    
                 ELSE
                   NAMESTR := NAMESTR  || ',' || V_HAKKWACD || ' ' || V_HAKKWANM;
                 END IF;
         END LOOP;    
         CLOSE C1;        
       
       RETURN NAMESTR;    
      
   END;



아래와 같은 결과를 얻을수있다.