oracle实验记录 (dbms_rowid使用)

SQL> insert into t1 values(1);

1 row created.

 

SQL> select file#,block# from (select dbms_rowid.rowid_relative_fno(rowid) f
,dbms_rowid.rowid_block_number(rowid) block# from t1);

     FILE#    BLOCK#
--------------------
         4       447

SQL> commit;
SQL> select object_id from dba_objects where object_name='T1';

 OBJECT_ID
----------
     54214
Commit complete.
建立一个rowid

SQL> declare
  2  a rowid;
  3  begin
  4  a:=dbms_rowid.rowid_create(1,54214,4,447,1);
  5  dbms_output.put_line(a);
  6  end;
  7  /                         (类型 0 受限 1扩展,objd,file#,block#,row)
AAANPGAAEAAAAG/AAB

SQL> select rowid from t1;

ROWID
------------------
AAANPGAAEAAAAG/AAU~~~~~~~有区别
  1  declare
  2  a rowid;
  3  begin
  4  a:=dbms_rowid.rowid_create(1,54214,4,447,20);
  5  dbms_output.put_line(a);
  6* end;
SQL> /
AAANPGAAEAAAAG/AAU~~~~~~~~~

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

SQL> select rowid from t1;

ROWID
------------------
AAANPGAAEAAAAG/AAK

  1  declare
  2  a number;~~~~~~~类型
  3  b number;~~~~~~~~~~~OBJD
  4  c number;~~~~~~~~~~~~~~~~~~~~FILE#
  5  d number;~~~~~~~~~~~~~~~~~~~~BLOCK#
  6  e number;~~~~~~~~~~~~~~~~~~~~数据块中行号
  7  begin
  8  dbms_rowid.rowid_info('AAANPGAAEAAAAG/AAK',a,b,c,d,e);
  9  dbms_output.put_line(a ||',' ||b ||','|| c ||','|| d ||','|| e);
 10* end;
SQL> /
1,54214,4,447,10

PL/SQL procedure successfully completed.


~~~~~~~~~~~~~
SQL> select dbms_rowid.rowid_type(rowid) from t1;

DBMS_ROWID.ROWID_TYPE(ROWID)
----------------------------
                           1

SQL> 看类型 0是受限,1是扩展
扩展的ROWID 格式
OOOOOO FFF BBBBBB RRR
数据对象编号相关文件编号块编号行编号       8I

• 受限的ROWID 格式
BBBBBBBB RRRR FFFF
块编号行编号文件编号  早期

~~~~~~~~~~~~


SQL> select dbms_rowid.rowid_object(rowid) from t1;

DBMS_ROWID.ROWID_OBJECT(ROWID)~~~~~~~~~~~返回objd
------------------------------
                         54214
SQL> select dbms_rowid.rowid_row_number(rowid) from t1;~~~~~~返回block中行号

DBMS_ROWID.ROWID_ROW_NUMBER(ROWID)
----------------------------------
                                10

SQL> select dbms_rowid.rowid_to_restricted(rowid,0) from t1;~

DBMS_ROWID.ROWID_T
------------------
000001BF.000A.0004~~~~~~~~~扩展rowid转换为 受限rowid

SQL> select dbms_rowid.rowid_to_extended('000001BF.000A.0004','XH','T1',0) from
dual
  2  ;                               受限ROWID,SCHEMA,TABLE,TYPE

DBMS_ROWID.ROWID_T
------------------
AAANPGAAEAAAAG/AAK       受限rowid 转 扩展


~SQL> select dbms_rowid.rowid_verify('000001BF.000A.0004','XH','T1',0) from dual
  2  ;

DBMS_ROWID.ROWID_VERIFY('000001BF.000A.0004','XH','T1',0)
---------------------------------------------------------
                                                        0
检查受限能否转成扩展 0 可以1不可以

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12020513/viewspace-611512/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/12020513/viewspace-611512/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值