내용 목차
본 장에서는 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 );
파라미터
파라미터 | 설명 |
---|---|
rowid_in | 정보를 얻고자 하는 대상 ROWID이다. |
segment_number | ROWID에서 추출한 세그먼트의 번호가 저장된다. |
absolute_fno | ROWID에서 추출한 절대 파일의 번호가 저장된다. |
block_number | ROWID에서 추출한 블록의 번호가 저장된다. |
row_number | ROWID에서 추출한 로우의 번호가 저장된다. |
예제
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 함수의 세부 내용은 다음과 같다.
프로토타입
FUNCTION ROWID_CREATE ( segment_number IN NUMBER, absolute_fno IN NUMBER, block_number IN NUMBER, row_number IN NUMBER ) RETURN ROWID;
파라미터
파라미터 | 설명 |
---|---|
segment_number | 세그먼트의 번호이다. |
absolute_fno | 절대 파일의 번호이다. |
block_number | 파일 내의 블록의 번호이다. |
row_number | 블록 내의 로우의 번호이다. |
예제
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);
입력한 정보에 맞는 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;
파라미터
파라미터 | 설명 |
---|---|
segment_number | 세그먼트의 번호이다. |
relative_fno | 상대 파일의 번호이다. |
block_number | 파일 내의 블록의 번호이다. |
row_number | 블록 내의 로우의 번호이다. |
예제
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 함수의 세부 내용은 다음과 같다.
프로토타입
FUNCTION ROWID_SEGMENT ( row_id IN ROWID ) RETURN NUMBER;
파라미터
파라미터 | 설명 |
---|---|
row_id | 정보를 추출할 ROWID이다. |
예제
SELECT dbms_rowid.rowid_segment(rowid) FROM table;
주어진 ROWID에서 파일 내의 블록의 번호를 추출하여 반환하는 함수이다.
ROWID_BLOCK_NUMBER 함수의 세부 내용은 다음과 같다.
프로토타입
FUNCTION ROWID_BLOCK_NUMBER ( row_id IN ROWID ) RETURN NUMBER;
파라미터
파라미터 | 설명 |
---|---|
row_id | 정보를 추출할 ROWID이다. |
예제
SELECT dbms_rowid.rowid_block_number(rowid) FROM table;
주어진 ROWID에서 블록 내의 로우의 번호를 추출하여 반환하는 함수이다.
ROWID_ROW_NUMBER 함수의 세부 내용은 다음과 같다.
프로토타입
FUNCTION ROWID_ROW_NUMBER ( row_id IN ROWID ) RETURN NUMBER;
파라미터
파라미터 | 설명 |
---|---|
row_id | 정보를 추출할 ROWID이다. |
예제
SELECT dbms_rowid.rowid_row_number(rowid) FROM table;