선언부(반환되는 데이터가 여러개일 경우)
CREATE OR REPLACE FUNCTION USER.FUNCTION_NAME (
    /* 함수 호출 시 받은 인자 */	
    P_LIST VARCHAR2,
    P_DEL VARCHAR2
) RETURN SPLIT_TBL PIPELINED
IS
    /* 함수에서 사용할 지역 변수 */	
    L_IDX		PLS_INTEGER;
    L_LIST		VARCHAR2(1000) := P_LIST;
    L_VALUE 	VARCHAR2(1000);
  • PipelinedTable 함수를 사용해서 건별로 처리 후 추출
실행부
BEGIN
  LOOP
       L_IDX := INSTR(L_LIST,P_DEL);
       IF L_IDX > 0 THEN
           PIPE ROW(SUBSTR(L_LIST,1,L_IDX-1));
           L_LIST := SUBSTR(L_LIST,L_IDX+LENGTH(P_DEL));
       ELSE
           PIPE ROW(L_LIST);
           EXIT;
       END IF;
  END LOOP;
  RETURN;
END;
  • P_LIST 문자열을 P_DEL 구분자로 split해서 추출 후 반환
반환 타입
CREATE TYPE USER."SPLIT_TBL" AS TABLE OF VARCHAR2(1000);

 

'Database' 카테고리의 다른 글

MySQL:ALTER TALBE ADD COLUMN이 오래 걸리는 경우  (0) 2025.05.19
GROUP BY ROLLUP  (0) 2025.04.29
쿼리 숫자형 텍스트 정렬  (0) 2023.11.22
JDBC-8038:Expression is not in a GROUP BY clause.  (0) 2023.11.02
Tibero procedure  (0) 2023.07.03

+ Recent posts