안녕하세요.
오늘은 오라클에서 type을 확인하는 방법 중 하나인 dump 함수 사용을 정리해보겠습니다.
컬럼의data type을 확인하는 방법은 몇가지가 있는데요, 제일 일반적인 것은 desc를 보거나 *_tab_columns를 확인하는 방법인 것같습니다.
저는 오브젝트에 존재하는 데이터타입을 확인하고 싶은게 아니였고, 실시간 함수가 적용된 결과값의 데이터타입을 궁금해서 방법을 찾다가 내장함수로 존재하는 dump라는 함수가 있는것을 확인하였습니다.
USAGE dump(column,format,start_position,length) 식으로 간단하게 사용가능합니다.
column명만 기입학 나머지는 미입력시 default값으로 입력가능합니다.
format은 8,10,16,17이 있으며 8진수 10진수 16진수입니다 17은 일반적으로는 사용하지 않고 (일반적으로 ASCII 또는 EBCDIC) 문자로 인쇄가능한 경우 각 바이트별로 반환합니다. 아니면 16으로 처리됩니다.
start_position과 length는 내부표현의 어느부분을 반환할것인가를 정하는부분입니다. 미입력시 전체를 반환합니다
(예시의 110,111 부분)
SELECT DUMP(last_name, 10, 3, 2) "ASCII"
FROM employees
WHERE last_name = 'Hunold'
ORDER BY employee_id;
ASCII
--------------------------------------------------------------------
Typ=1 Len=6: 110,111
결과값은 Typ=xx Len=xx xxx,xxx 형식으로 결과값이 나오게 됩니다
Typ은 Type으로 숫자에 따라 데이터타입을 나타냅니다. 대표적으로 아래 숫자가 많이 사용됩니다.
1은 varchar
2는 number
8은 long
12는 date
96은 char/Nchar
112는 CLOB
모든 숫자에 대한 타입은 아래 출처에서 확인하시면 됩니다.
SQL Language Reference
docs.oracle.com
두번째 Len은 데이터의 길이(bytes)입니다. 6은 6bytes의 데이터가 저장되어 있다는 뜻입니다.
세번째 숫자는 내부적으로 데이터를 표시하는 코드입니다.
출처 : https://docs.oracle.com/en/database/oracle/oracle-database/19/sqlrf/DUMP.html
SQL Language Reference
docs.oracle.com
저의경우에는 select dump(mod(empno,2)) from emp 의 형식으로 간단하게 다른 함수사용시 데이터타입이 어떻게 나오는지에 대해서 확인할 때 사용하였습니다.
감사합니다
'Oracle > 운영' 카테고리의 다른 글
| lob의 용량관리 (deduplicate 와 compress) (0) | 2025.12.17 |
|---|---|
| [unused 와 drop column]컬럼 삭제 매커니즘과 각 명령어 수행 시 용량 비교 (0) | 2025.12.10 |
| lob 컬럼 move tablespace 명령어 (0) | 2025.07.17 |
| SQL loader 사용시 ORA-00054 발생과 예방 (0) | 2025.06.02 |
| LOB관련 파라미터 DB_SECUREFILE (0) | 2025.05.27 |
댓글