变量类型 ROWID 和 UROWID
ROWID:
ROWID为该表行的唯一标识,是一个伪列,这个伪列可以用SELECT查看,但是不可以用INSERT, UPDATE来修改,不可以用DELETE来删除。
UROWID:
ROWID可以分为物理rowid和逻辑rowid两种。普通的堆表中的rowid是物理rowid,索引组织表(IOT)的rowid是逻辑rowid。
oracle提供了一种urowid的数据类型,同时支持物理和逻辑rowid。
物理rowid又分为扩展rowid(extended rowid)和限制rowid(restricted rowid)两种格式。
限制rowid主要是oracle7以前的rowid格式,现在已经不再使用,保留该类型只是为了兼容性。
例子1:
1.创建一临时表
create table test_rowid (id number, row_id rowid);
2.插入一行记录
insert into test_rowid values(1,null);
3.修改刚插入的记录
update test_rowid set row_id = rowid where id = 1;
4.查看rowid
select rowid,row_id from test_rowid;
例子2:
1
2
3
4
5
6
7
8
9
10
|
DECLARE Row_id ROWID; info VARCHAR2(40); BEGIN INSERT INTO scott.dept VALUES (90, '财务室' , '海口' ) RETURNING rowid, dname|| ':' ||to_char(deptno)|| ':' ||loc INTO row_id, info; DBMS_OUTPUT.PUT_LINE( 'ROWID:' ||row_id); DBMS_OUTPUT.PUT_LINE(info); END ; |