| Oracle9i Supplied PL/SQL Packages and Types Reference Release 2 (9.2) Part Number A96612-01 |
|
The DBMS_ROWID package lets you create ROWIDs and obtain information about ROWIDs from PL/SQL programs and SQL statements. You can find the data block number, the object number, and other ROWID components without writing code to interpret the base-64 character external ROWID.
This chapter discusses the following topics:
Some of the functions in this package take a single parameter, such as a ROWID. This can be a character or a PL/SLQ ROWID, either restricted or extended, as required.
You can call the DBMS_ROWID functions and procedures from PL/SQL code, and you can also use the functions in SQL statements.
You can use functions from the DBMS_ROWID package just like built-in SQL functions; in other words, you can use them wherever you can use an expression. In this example, the ROWID_BLOCK_NUMBER function is used to return just the block number of a single row in the EMP table:
SELECT dbms_rowid.rowid_block_number(rowid) FROM emp WHERE ename = 'KING';
If Oracle returns the error "ORA:452, 0, 'Subprogram '%s' violates its associated pragma' for pragma restrict_references", it could mean the violation is due to:
This example returns the ROWID for a row in the EMP table, extracts the data object number from the ROWID, using the ROWID_OBJECT function in the DBMS_ROWID package, then displays the object number:
DECLARE object_no INTEGER; row_id ROWID; ... BEGIN SELECT ROWID INTO row_id FROM emp WHERE empno = 7499; object_no := dbms_rowid.rowid_object(row_id); dbms_output.put_line('The obj. # is '|| object_no); ...
This package runs with the privileges of calling user, rather than the package owner ('sys').
The types are as follows:
For example:
rowid_type_restricted constant integer := 0; rowid_type_extended constant integer := 1;
| Result | Description |
|---|---|
|
VALID |
Valid |
|
INVALID |
Invalid |
For example:
rowid_is_valid constant integer := 0; rowid_is_invalid constant integer := 1;
| Result | Description |
|---|---|
|
UNDEFINED |
Object Number not defined (for restricted |
For example:
rowid_object_undefined constant integer := 0;
| Result | Description |
|---|---|
|
INTERNAL |
Convert to/from column of |
|
EXTERNAL |
Convert to/from string format |
For example:
rowid_convert_internal constant integer := 0; rowid_convert_external constant integer := 1;
| Exception | Description |
|---|---|
|
ROWID_INVALID |
Invalid rowid format |
|
ROWID_BAD_BLOCK |
Block is beyond end of file |
For example:
ROWID_INVALID exception; pragma exception_init(ROWID_INVALID, -1410); ROWID_BAD_BLOCK exception; pragma exception_init(ROWID_BAD_BLOCK, -28516);
|
![]() Copyright © 2000, 2002 Oracle Corporation. All Rights Reserved. |
|