Database/유용한함수

Oracle 오라클 행의 값을 한 컬럼으로 합치는 함수

리커니 2013. 5. 16.
반응형

Oracle 오라클 행의 값을 한 컬럼으로 합치는 함수

 

* 한 쿼리의 값을 한 컬럼으로 합치기

 

CREATE OR REPLACE FUNCTION KURS.NF_QRY_ROW_CONCAT
(
  I_QRY     VARCHAR2    -- 쿼리명령문
, I_MAX     NUMBER      -- 최대길이. 이 길이가 넘어간 후 처리 종료됨.
, I_DIV     VARCHAR2    -- 중간 구분자
) RETURN VARCHAR2
IS
  RSLT VARCHAR2(8000);
  STR1 VARCHAR2(1000);
  CURS SYS_REFCURSOR;
BEGIN
  OPEN CURS FOR I_QRY;
  LOOP
    FETCH CURS INTO STR1;
    EXIT WHEN CURS%NOTFOUND;
    IF (RSLT IS NULL) THEN
      RSLT := STR1;
    ELSE
      IF (LENGTHB(RSLT) > I_MAX) THEN
        EXIT;
      ELSE
        RSLT := RSLT || I_DIV || STR1;
      END IF;
    END IF;
  END LOOP;

  CLOSE CURS;

  RSLT := TRIM(RSLT);

  RETURN RSLT;
END;

 

* 응용 & 사용법*

 

SELECT NF_QRY_ROW_CONCAT('SELECT EMP_ID || EMP_NM FROM EMPLOYEES
 WHERE SALARY > ''30000000''
 ORDER BY EMP_ID',1000,',')
  FROM DUAL;

 

결과

1111홍길동, 2222이순신, 3333장보고....

반응형

'Database > 유용한함수' 카테고리의 다른 글

Oracle 오라클 주민번호 유효성 체크 함수  (1) 2013.05.21

댓글

💲 추천 글