变量类型 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;


posted on 2018-05-29 14:54  空空Ryan  阅读(1453)  评论(0编辑  收藏  举报

导航