首页|资讯|互联网|电信|硬件|软件|情报|产经|博客|家庭|商用电脑|游戏|评测|学院|下载|网络通信|方案应用|搜索
移动计算|商用软件|外包|开源|中间件|企业|IT经理|发烧友|程序员|IT女性|学生|老板|笔记本|手机|台式机|数码|论坛
程序员

如何用dbms_rowid获取rowid的详细信息

2008-03-26 13:56 作者:李震宗 来源:赛迪网
[摘要] 在Oracle中,通过dbms_rowid包可以获得Rowid中包含的详细信息,我们将通过一个定义自定义函数来介绍此package的使用方法。
[关键字] Oracle dbms_rowid rowid
  我们知道,通过dbms_rowid包可以获得Rowid中包含的详细信息,在下文中,我们将通过一个定义自定义函数来介绍此package的使用方法:

  create or replace function get_rowid

  (l_rowid in varchar2)

  return varchar2

  is

  ls_my_rowid varchar2(200);

  rowid_type number;

  object_number number;

  relative_fno number;

  block_number number;

  row_number number;

  begin

  dbms_rowid.rowid_info

  (l_rowid,rowid_type,object_number,relative_fno, block_number, row_number);

   ls_my_rowid := 'Object# is :'  to_char(object_number)  chr(10)  

   'Relative_fno is :'  to_char(relative_fno)  chr(10)  

   'Block number is :'  to_char(block_number)  chr(10)  

   'Row number is :'  to_char(row_number);

   return ls_my_rowid ;

  end;

  /

  具体用法:

  [oracle@jumper tools]$ sqlplus scott/tiger

  SQL*Plus: Release 9.2.0.4.0 - Production on Sun Nov 7 12:30:19 2004

  Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.

  Connected to:

  Oracle9i Enterprise Edition Release 9.2.0.4.0 - Production

  With the Partitioning option

  JServer Release 9.2.0.4.0 - Production

  SQL> set echo on

  SQL> @f_get_rowid

  SQL> create or replace function get_rowid

   2 (l_rowid in varchar2)

   3 return varchar2

   4 is

   5 ls_my_rowid varchar2(200);

   6 rowid_type number;

   7 object_number number;

   8 relative_fno number;

   9 block_number number;

   10 row_number number;

   11 begin

   12 dbms_rowid.rowid_info(l_rowid,rowid_type,

   object_number,relative_fno, block_number, row_number);

   13 ls_my_rowid := 'Object# is :'  to_char(object_number)  chr(10)  

   14 'Relative_fno is :'  to_char(relative_fno)  chr(10)  

   15 'Block number is :'  to_char(block_number)  chr(10)  

   16 'Row number is :'  to_char(row_number);

   17 return ls_my_rowid ;

   18 end;

   19 /

  Function created.

  SQL>

  SQL> select * from dept;

   DEPTNO DNAME LOC

  ---------- -------------- -------------

   10 ACCOUNTING NEW YORK

   20 RESEARCH DALLAS

   30 SALES CHICAGO

   40 OPERATIONS BOSTON

  SQL> select rowid,a.* from dept a;

  ROWID DEPTNO DNAME LOC

  ------------------ ---------- -------------- -------------

  AAABiPAABAAAFRSAAA 10 ACCOUNTING NEW YORK

  AAABiPAABAAAFRSAAB 20 RESEARCH DALLAS

  AAABiPAABAAAFRSAAC 30 SALES CHICAGO

  AAABiPAABAAAFRSAAD 40 OPERATIONS BOSTON

  SQL> col row_id for a60

  SQL> select get_rowid('AAABiPAABAAAFRSAAA') row_id from dual;

  ROW_ID

  ------------------------------------------------------------

  Object# is :6287

  Relative_fno is :1

  Block number is :21586

  Row number is :0

  SQL> select get_rowid('AAABiPAABAAAFRSAAB') row_id from dual;

  ROW_ID

  ------------------------------------------------------------

  Object# is :6287

  Relative_fno is :1

  Block number is :21586

  Row number is :1

  SQL>

【责任编辑 陈东方】

关键词: Oracle, dbms_rowid, rowid,
  • 我要留言
关于eNet | 广告服务 | 版权声明 | 加入eNet | 联系我们 | 建议/投诉 | 网站导航 | 加入收藏

网站合作、内容监督、商务咨询、投诉建议:010-65245588
合作建议:hezuo@mail.enet.com.cn
Copyright © 1998--2008 硅谷动力公司版权所有 京ICP证000044号

京ICP证000044号