DBMS 1
DA, SQL, DB보안 등 실무자를 위한 위한 DB기술 바이블!
DBMS_ROWID
Tibero System Package Guide
17.1. 개요
17.2. 프로시저
17.2.1. ROWID_INFO
17.3. 함수
17.3.1. ROWID_CREATE
17.3.2. ROWID_CREATE_WITH_RELATIVE_FNO
17.3.3. ROWID_SEGMENT
17.3.4. ROWID_BLOCK_NUMBER
17.3.5. ROWID_ROW_NUMBER
17.3.6. ROWID_ABSOLUTE_FNO
17.3.7. ROWID_TO_RELATIVE_FNO
본 장에서는 DBMS_ROWID 패키지의 기본 개념과 패키지 내의 프로시저와 함수를 사용하는 방법을 설명한다.
DBMS_ROWID는 SQL 문장이나 PSM을 수행하여 얻은 ROWID에 담긴 정보를 보거나 임의의 ROWID를 만들기 위한 패키지이다. ROWID에는 세그먼트(segment), 블록, 절대 파일(absolute file), 로우의 번호에 대한 정보가 포함되어 있다.
본 절에서는 DBMS_ROWID 패키지에서 제공하는 프로시저를 알파벳 순으로 설명한다.
ROWID에 담긴 모든 정보를 한 번에 추출하기 위해 사용되는 프로시저이다. 프로시저이기 때문에 SQL 문장 내에서는 사용될 수 없다.
ROWID_INFO 프로시저의 세부 내용은 다음과 같다.
- 프로토타입
PROCEDURE ROWID_INFO
(
rowid_in IN ROWID,
segment_number OUT NUMBER,
absolute_fno OUT NUMBER,
block_number OUT NUMBER,
row_number OUT NUMBER
);
- 파라미터
- 예제
DBMS_ROWID.ROWID_INFO(rowid_1, sgmt_no, fno, blk_no, row_no);
DBMS_OUTPUT.PUT_LINE('segment number : ' || sgmt_no);
DBMS_OUTPUT.PUT_LINE('absolute file number : ' || fno);
DBMS_OUTPUT.PUT_LINE('block number : ' || blk_no);
DBMS_OUTPUT.PUT_LINE('row number : ' || row_no);
본 절에서는 DBMS_ROWID 패키지에서 제공하는 함수를 알파벳 순으로 설명한다.
입력한 정보에 맞는 ROWID를 생성하는 함수이다. 주로 가져온 ROWID가 올바로 만들어진 것인지 확인해보는 용도로 사용한다. 사용자가 임의의 정보로 ROWID를 생성할 수도 있지만 큰 의미는 없다.
ROWID_CREATE 함수의 세s="indexterm">
- 프로토타입
FUNCTION ROWID_CREATE
(
segment_number IN NUMBER,
absolute_fno IN NUMBER,
block_number IN NUMBER,
row_number IN NUMBER
)
RETURN ROWID;
- 파라미터
- 예제
DBMS_ROWID.ROWID_INFO(rowid_1, sgmt_no, abs_fno, blk_no, row_no);
my_rowid := DBMS_ROWID.ROWID_CREATE(sgmt_no, abs_fno, blk_no, row_no);
DBMS_OUTPUT.PUT_LINE(rowid_1 || ' ' || my_rowid);
17.3.2. ROWID_CREATE_WITH_RELATIVE_FNO
입력한 정보에 맞는 ROWID를 생성하는 함수이다. ROWID_CREATE 함수에서는 절대 파일 번호를 사용하지만 ROWID_CREATE_WITH_RELATIVE_FNO 함수에서는 상대 파일 번호를 사용하여 ROWID를 생성한다.
ROWID_CREATE_WITH_RELATIVE_FNO 함수의 세부 내용은 다음과 같다.
- 프로토타입
FUNCTION ROWID_CREATE_WITH_RELATIVE_FNO
(
segment_number IN NUMBER,
relative_fno IN NUMBER,
block_number IN NUMBER,
row_number IN NUMBER
)
RETURN ROWID;
- 파라미터
- 예제
DBMS_ROWID.ROWID_INFO(rowid_1, sgmt_no, abs_fno, blk_no, row_no);
rel_fno := DBMS_ROWID.ROWID_TO_RELATIVE_FNO(rowid_1);
my_rowid := DBMS_ROWID.ROWID_CREATE_WITH_RELATIVE_FNO(sgmt_no,
rel_fno, blk_no, row_no);
DBMS_OUTPUT.PUT_LINE(rowid_1 || ' ' || my_rowid);
주어진 ROWID에서 세그먼트의 번호를 추출하여 반환하는 함수이다.
ROWID_SEGMENT 함수의 세부 내용은 다음과 같다.
17.3.4. ROWID_BLOCK_NUMBER
주어진 ROWID에서 파일 내의 블록의 번호를 추출하여 반환하는 함수이다.
ROWID_BLOCK_NUMBER 함수의 세부 내용은 다음과 같다.
주어진 ROWID에서 블록 내의 로우의 번호를 추출하여 반환하는 함수이다.
ROWID_ROW_NUMBER 함수의 세부 내용은 다음과 같다.
17.3.6. ROWID_ABSOLUTE_FNO
주어진 ROWID에서 세그먼트 내의 절대 파일의 번호를 추출하여 반환하는 함수이다.
ROWID_ABSOLUTE_FNO 함수의 세부 내용은 다음과 같다.
17.3.7. ROWID_TO_RELATIVE_FNO
주어진 ROWID에서 절대 파일의 번호를 추출해 테이블스페이스의 상대적인 파일 번호로 변환하는 함수이다.
ROWID_TO_RELATIVE_FNO 함수의 세부 내용은 다음과 같다.