网站首页
JSP空间
动态资讯
开源项目
技术文档
资源下载
J2EE资源
客户论坛
在线支付
 
  技术文档>>数据库技术>>Oracle技术>>Oracle开发>查看文档  
  如何用dbms_rowid获取rowid的详细信息     
  文章作者:未知  文章来源:赛迪网技术社区  
  查看:127次  录入:管理员--2008-03-26  
 

【赛迪网-it技术报道】我们知道,通过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>

 
 
上一篇: 如何使用分析函数来进行行和列的转换    下一篇: 如何正确的使用or展开来改写sql查询
  相关文档
Oracle中spfile和pfile之间区别和联系 05-13
深入讲解ora-00600 2262错误的解决方法 04-03
oracle数据库共享连接和专用连接方式比较 (1) 04-28
oracle tnslistener服务启动后自动停止问题 07-21
Oracle数据库系统使用经验六则 01-15
oracle数据库中的timestamp和date类型 05-08
讲解oracle数据库冷备份恢复的具体步骤 07-21
教你快速掌握oracle 9i数据库的移动过程 11-15
轻松掌握Oracle中事务管理的概念 09-29
redo copy latch未命中率并不需要调整 04-16
教你在不同数据库环境下读取前n条记录数 07-14
详细讲解有关"cbo"优化的三个疑难问题 02-03
理解和使用Oracle 8i分析工具-LogMiner 01-15
个人经验总结:在oracle中恢复被drop掉的表 08-07
教你通过任务和管道异步调用存储过程 04-11
Oracle中对像名大小写敏感性的深入解析 08-05
实例讲解表碎片的具体起因及解决的办法 (1) 02-25
用一个实例讲解如何正确使用数据库游标 04-09
oracle 9i与10g中plan_table的不同 02-29
移动一个带有lob字段的表到另外一个表空间 03-06
返回首页 | 关于我们 | J网章程 | JSP空间合租 | 客服中心 | 免责声明 | 常见问题 | 参观机房
本站主机空间代理至厦门市华众网络科技有限公司
《中华人民共和国增值电信业务经营许可证》
编号:闽B2-20050079
@2005-2008福建JSP技术网 版权所有 闽ICP备05000928号
厦门(总部):13616026886 福州:0591-87655121
邮箱:admin@fjjsp.com 站长QQ,点击这里给我发消息