PROCEDURE split

Oracle 2015. 7. 29. 09:48

create or replace TYPE "T_IN_LIST_TAB_CLOB" AS TABLE OF CLOB -- 선언

create or replace PROCEDURE        PR_SPLIT(P_IN_LIST IN CLOB, P_IN_DELIMITER IN VARCHAR2, O_CUR OUT SYS_REFCURSOR)
IS
   V_TAB     T_IN_LIST_TAB_CLOB := T_IN_LIST_TAB_CLOB();
   V_IDX     NUMBER;
   V_TEXT    CLOB;
   V_SPLIT   VARCHAR2(4000);
BEGIN

    V_TEXT    := P_IN_LIST || P_IN_DELIMITER;
    LOOP
      EXIT WHEN V_TEXT IS NULL;
     
      V_SPLIT := SUBSTR(V_TEXT,1,4000);
      V_IDX := INSTR(V_SPLIT, P_IN_DELIMITER, -1); -- 뒤에서 구분자로 특정값을 찾음
     
      V_SPLIT := SUBSTR(V_TEXT,1,V_IDX); -- 1에서 가장뒤에 구분자값까지 짜름
     
      LOOP
        V_IDX := INSTR(V_SPLIT, P_IN_DELIMITER);
        EXIT WHEN NVL(V_IDX, 0) = 0;
        V_TAB.EXTEND;
        V_TAB(V_TAB.LAST) := TRIM(SUBSTR(V_SPLIT, 1, V_IDX - 1));
        V_SPLIT := SUBSTR(V_SPLIT, V_IDX + 1);
      END LOOP;
     
      V_TEXT := SUBSTR( V_TEXT, V_IDX+1 );
   END LOOP;
   
     OPEN O_CUR FOR
    SELECT * FROM TABLE(V_TAB);
   
END;

'Oracle' 카테고리의 다른 글

oracle db link 분산 트랜젝션 사용하기  (0) 2015.10.27
oracle 패키지 소스를 파일로 저장하는 스크립트  (0) 2015.09.25
index Rebuild  (0) 2015.04.29
Posted by 정광원
,
Posted by 정광원
,

index Rebuild

Oracle 2015. 4. 29. 11:29

http://egloos.zum.com/antonio91/v/4295282

'Oracle' 카테고리의 다른 글

oracle db link 분산 트랜젝션 사용하기  (0) 2015.10.27
oracle 패키지 소스를 파일로 저장하는 스크립트  (0) 2015.09.25
PROCEDURE split  (0) 2015.07.29
Posted by 정광원
,