All thing of the world!

Oracle CHARTOROWID 설명 : 오라클 함수 본문

IT/Oracle DBMS

Oracle CHARTOROWID 설명 : 오라클 함수

WorldSeeker 2021. 4. 1. 09:57

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

 

Comments