SYS_CONNHECT_BY_PATH 에 ESC (ASCII 27) 문자를 구분자로 처리할 경우


ORA-30003: illegal parameter in SYS_CONNECT_BY_PATH function

이런 에러가 발생한다.


특수문자를 사용할 경우 아래처럼 처리할 수 있다.


Sample

SELECT CHR(27) FROM DUAL -- ASCII 코드로 문자 확인

SELECT RAWTOHEX ('') FROM DUAL  -- HEX 코드 확인

SELECT UNISTR('\001B') FROM DUAL  -- HEX 코드를 유니코드로 변환


WITH TB1 AS (
SELECT 1 COL1, NULL COL2 FROM DUAL
UNION ALL
SELECT 2, 1 FROM DUAL
UNION ALL
SELECT 3, 1 FROM DUAL
UNION ALL
SELECT 4, 2 FROM DUAL
UNION ALL
SELECT 5, 2 FROM DUAL
UNION ALL
SELECT 6, 3 FROM DUAL
)
SELECT PATH1
          , TRANSLATE(PATH1, '_', '_') PATH2
          , TRANSLATE(PATH1, '_' || CHR(27), '_') PATH3
          , REPLACE(PATH2, CHR(27), ' > ') PATH4
          , PATH3 PATH5
          , REPLACE(PATH3, CHR(10), ' > ') PATH6
          , REGEXP_SUBSTR(PATH1, '[^]+', 1, 1) CODE1
          , REGEXP_SUBSTR(PATH1, '[^'||CHR(27)||']+', 1, 2) CODE2
          , REGEXP_SUBSTR(PATH1, '[^'||CHR(27)||']+', 1, 3) CODE3
FROM (
        SELECT SYS_CONNECT_BY_PATH(COL1, '') PATH1
                  , SUBSTR(SYS_CONNECT_BY_PATH(COL1, ''), 2) PATH2
                  , SUBSTR(SYS_CONNECT_BY_PATH(COL1, '
'), 2) PATH3
          FROM TB1
         START WITH COL2 IS NULL
         CONNECT BY PRIOR COL1 = COL2
         ORDER SIBLINGS BY COL1)


 

XML 에서 ESC 문자 출력

참고 : http://www.dpawson.co.uk/xsl/sect2/N3353.html
HTML ISO-8859-1 참고 : http://blog.naver.com/tyboss/70152845514

<character code="27"/>

 
Java 에서 ESC 문자 출력

char esc = '\u001B';
char esc2 = 27;


 

+ Recent posts