오라클에서 컬럼내용 나열 함수 만들기

데이터를 후가공하여 컬럼내용을 나열할때 사용하는 함수입니다. 만약 아이템코드에 대한 여러가지 아이템부품이 있고, 한줄로 나열해서 쓸일이 있으면 아래 함수를 사용하시면 됩니다.

 

예제 테이블)

아이템코드   아이템부품
0001            부품1
0001            부품2
0001            부품3
0002            공구1
0002            공구2

 

아이템코드에 대한 여러개의 부품들이 있습니다. 지금 저희가 만들 함수는 아이템코드로 호출을하면 이러한 부품들을 한줄로 만들어서 한줄로 나열하게 만드는 겁니다.

 

CREATE OR REPLACE FUNCTION 펑션이름(아이템코드 IN CHAR)
 RETURN VARCHAR2
IS
  TEMPSTR VARCHAR2(4000);

  CURSOR ITEM_CUR IS

       SELECT 아이템부품 FROM 아이템테이블
    WHERE 아이템코드 = 아이템코드;

   ITEM_REC ITEM_CUR%ROWTYPE;
BEGIN
   TEMPSTR := '';

   FOR ITEM_REC IN ITEM_CUR LOOP
       TEMPSTR := TEMPSTR || ITEM_REC.아이템부품 || ', ';
   END LOOP;
   TEMPSTR := RTRIM(TEMPSTR, ', ');
   RETURN TEMPSTR;
END 펑션이름;

 

간력하게 설명을 드리면 TEMPSTR이라는 변수는 아이템리스트가 들어갈 변수이며, 아이템코드부품의 개수에 따라 FOR으로 반복을 하여 ROW에 해당되는 아이템부품을 한줄로 계속 나열해서 리턴하게 만들었습니다.


함수생성후 SELECT 함수이름(아이템코드) FROM DUAL 로 테스트해보세요.