Oracle基础包之DBMS_ROWID(七)

rowid_create
说明:

建立ROWID

语法:
dbms_rowid.rowid_create (
rowid_type in number,object_number in number,
relative_fno in n umber,block_number in number,
row_number in number) return rowid;
--其中,rowid_type用于指定ROWID类型(0:受限ROWID,1:扩展ROWID);object_number用于指定数据对象号;relative_fno用于指定相对文件号;block_number用于指定在文件中的数据块号;row_number用于指定在数据块中的行号.
rowid_info
说明:

用于取得特定ROWID的详细信息.

语法:
dbms_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);
--其中rowid_in指定rowid。
rowid_type
说明:

用于返回特定ROWID的类型

语法:
dbms_rowid.rowid_type(row_id in rowid) return number;
其中返回0表示受限rowid,返回1表示扩展rowid。
例子:
select dbms_rowid.rowid_type(AAAC90AAFAAAAACAAK) from dual;
rowid_object
说明:

用于取得特定ROWID所对应的数据对象号

语法:
dbms_rowid.rowid_object(row_id in rowid) return number;
例子:
select dbms_rowid.rowid_object(row_id) from dept;
rowid_relative_fno
说明:

用于取得特定ROWID所对应的相对文件号

语法:
dbms_rowid.rowid_relative_fno(row_id in rowid) return numer;
例子:
select dbms_rowid.rowid_relative_fno(rowid) from dept;
rowid_block_number
说明:

用于返回特定ROWID在数据文件中所对应的数据块号.

语法:
dbms_rowid.rowid_block_number(row_id in rowid) return number;
例子:
select dbms_rowid.rowid_block_number(rowid) from dept;
rowid_row_number
说明:

用于返回特定ROWID在数据块中所对应的行号.

语法:
dbms_rowid.rowid_row_number(row_id in rowid) return number;
例子:
select dbms_rowid.rowid_row_number(rowid) from dept;
rowid_to_obsolute_fno
说明:

用于返回特定ROWID所对应的绝对文件号

语法:
dbms_rowid.rowid_to_obsolute_fno(row_id in rowid,schema_name in varchar2,object_name in varchar2) return number;
declare
my_rowid rowid;
rowid_type number;
object_number number;
relative_fno number;
block_number number;
row_number number;
abs_fno int;
rowid_val char(18);
begin
--rowid_create
my_rowid:=dbms_rowid.rowid_create(1,12197,3,100,1);
dbms_output.put_line(my_rowid);
--rowid_info
dbms_rowid.rowid_info('AAAC90AAFAAAAACAAK',rowid_type,object_number,relative_fno,block_number,row_number);
dbms_output.put_line('数据对象号'||object_number);
--rowid_to_obsolute_fno
select rowid into rowid_val from emp where empno=7788;
abs_fno:=dbms_rowid.rowid_to_obsolute_fno(rowid_val,'scott','emp');
dbms_output.put_line('7788对应的绝对文件号'||abs_fno);
end;
rowid_to_extended
说明:

用于将受限rowid转变为扩展rowid

语法:
dbms_rowid.rowid_to_extended(old_rowid in rowid,schema_name in varchar2,object_name in varchar2,conversion_type in integer) return rowid;

其中,conversion_type指定转换类型(rowid_convert_internal/external_convert_external)
例子:
select empno,ename from emp where rowid=dbms_rowid.rowid_to_extended('0000001C.0007.0005','SCOTT','EMP',0);
rowid_to_restricted
说明:

用于将扩展rowid转换为受限rowid

语法:
dbms_rowid.rowid_to_restricted(old_rowid in rowid,conversion_type in integer) return rowid;
例子:
select dbms_rowid.rowid_to_restricted(rowid,0) from emp;
rowid_verify
说明:

检查是否可以将受限rowid转变为扩展rowid

语法:
dbms_rowid.rowid_verify(rowid_in in rowid,schema_name in varchar2,object_name in varchar2,vonversion_type in integer) return number;

--其中返回0表示可以,1表示不能。
例子:
select dbms_rowid.rowid_verify('0000001C.0007.0005','SCOTT','EMP',0) from dual;
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夜未央,流年殇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值