Oracle CHARTOROWID 설명 : 오라클 함수
1. 함수의 목적
Oracle CHARTOROWID는 CHAR, VARCHAR2, NCHAR 또는 NVARCHAR2 데이터타입 값을 ROWID 데이터타입으로 변경한다. ROWID 데이터타입이란 ROWID를 담을 수 있는 특수한 데이터타입이라 보면 된다.
* ROWID란?
Oracle Database 힙 (heap) 테이블의 row에는 ROWID라 불리는 행 주소가 있다. 간략히, 행의 주소를 가르키는 pseudo column이라고 보면 된다.
2. 샘플을 통한 개념 퀵뷰
SELECT last_name
FROM employees
WHERE ROWID = CHARTOROWID('AAAFd1AAFAAAABSAA/');
LAST_NAME
-------------------------
Greene
3. 사용방법
4. 함수 PARAMETER 설명
[char]
문자타입의 ROWID 주소를 적는다.
5. 다양한 샘플표현
example 1) rowid를 찾아, 찾은 rowid를 필터조건 제공
employees 테이블에서 한개만 무작위로 rowid를 알아낸다.
select rowid, employee_id
from employees
where rownum<=1;
ROWID EMPLOYEE_ID
------------------ -----------
AAAR25AADAAALXdAAA 100
알아낸 rowid를 제공하여 쿼리를 작성한다.
select rowid, employee_id
from employees
where rowid=chartorowid('AAAR25AADAAALXdAAA');
ROWID EMPLOYEE_ID
------------------ -----------
AAAR25AADAAALXdAAA 100
example 2) 알아낸 rowid로 바로 rowid에 등식을 쓰면 될까? 안된다.
select *
from employees
where rowid=AAAR25AADAAALXdAAA;
where rowid=AAAR25AADAAALXdAAA
*
3행에 오류:
ORA-00904: "AAAR25AADAAALXDAAA": 부적합한 식별자
example 3) 알아낸 rowid를 chartorowid를 쓰지 않고 스트링으로 제공하면 될까? 된다.
select rowid, employee_id
from employees
where rowid='AAAR25AADAAALXdAAA';
ROWID EMPLOYEE_ID
------------------ -----------
AAAR25AADAAALXdAAA 100