使用dbms_rowid包获得rowid的详细信息

-- ROWID_INFO breaks ROWID into its components and returns them:
--
-- rowid_in - ROWID to be interpreted
-- rowid_type - type (restricted/extended)
-- object_number - data object number (rowid_object_undefined for restricted)
-- relative_fno - relative file number
-- block_number - block number in this file
-- file_number - file number in this block
-- ts_type_in - type of tablespace which this row belongs to
-- 'BIGFILE' indicates Bigfile Tablespace
-- 'SMALLFILE' indicates Smallfile (traditional pre-10i) TS.
-- NOTE: These two are the only allowed values for this param
--
procedure rowid_info( rowid_in IN rowid,
rowid_type OUT number,
object_number OUT number,
relative_fno OUT number,
block_number OUT number,
row_number OUT number,
ts_type_in IN varchar2 default 'SMALLFILE');
[@more@]

创建相关函数,修改自eygle

create or replace package mytools is

-- Author : ADMINISTRATOR
-- Created : 2007-8-15 10:27:54
-- Purpose :

function get_rowid
(l_rowid in varchar2)
return varchar2;

end mytools;
/
create or replace package body mytools is

function get_rowid
(l_rowid in varchar2)
return varchar2
is
ls_my_rowid varchar2(500);
rowid_type number;
object_number number;
relative_fno number;
block_number number;
row_number number;
------------------
var_owner varchar2(30);
var_object_name varchar2(30);
var_object_type varchar2(19);


begin
dbms_rowid.rowid_info(l_rowid,rowid_type,object_number,relative_fno, block_number, row_number);
------------------
select t.owner,t.object_name,t.object_type into var_owner, var_object_name, var_object_type
from all_objects t where t.object_id= object_number;

ls_my_rowid := 'Owner# is :'||to_char(var_owner)||chr(10)||
'Object_name is :'||to_char(var_object_name)||chr(10)||
'Object_type is :'||to_char(var_object_type)||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 get_rowid;


end mytools;
/

应用

SQL> SELECT A.ROWID FROM WQ.T1 A where ROWNUM<5;
AAADHoAAHAAABbSAAA
AAADHoAAHAAABbSAAB
AAADHoAAHAAABbSAAC
AAADHoAAHAAABbSAAD

SQL> select mytools.get_rowid('AAADHoAAHAAABbSAAA') row_id from dual;
Owner# is :WQ
Object_name is :T1
Object_type is :TABLE
Relative_fno is :7
Block number is :5842
Row number is :0

摘自:使用dbms_rowid包获得rowid的详细信息

eygle

http://soft.zdnet.com.cn/software_zone/2007/0811/452344.shtml

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

转载于:http://blog.itpub.net/79291/viewspace-957460/

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值