1、概述

作用:用于在PL/SQL程序和SQL语句中取得行标识符(rowid)的信息并建立ROWID,通过该包可以取得行所在的文件号,行所在文件的数据块号,行所在数据块的行号,以及数据库对象号等消息.

2、包的组成

1)、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用于指定在数据块中的行号.

2)、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。

3)、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;

4)、rowid_object
说明:用于取得特定ROWID所对应的数据对象号
语法:dbms_rowid.rowid_object(row_id in rowid) return number;
例子:select dbms_rowid.rowid_object(row_id) from dept;

5)、rowid_relative_fno
说明:用于取得特定ROWID所对应的相对文件号
语法:dbms_rowid.rowid_relative_fno(row_id in rowid) return numer;
例子:select dbms_rowid.rowid_relative_fno(rowid) from dept;

6)、rowid_block_number
说明:用于返回特定ROWID在数据文件中所对应的数据块号.
语法:dbms_rowid.rowid_block_number(row_id in rowid) return number;
例子:select dbms_rowid.rowid_block_number(rowid) from dept;

7)、rowid_row_number
说明:用于返回特定ROWID在数据块中所对应的行号.
语法:dbms_rowid.rowid_row_number(row_id in rowid) return number;
例子:select dbms_rowid.rowid_row_number(rowid) from dept;

8)、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;

9)、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);

10)、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;

11)、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;

七、dbms_rowid(用于在PL/SQL程序和SQL语句中取得行标识符)的更多相关文章

  1. c# sql在where查询语句中使用字符串变量与int型变量

    使用where语句访问数据库时where语句用上文中以及定义过的变量来查询. string sql3 = string.Format("update Ships set ContainerN ...

  2. SQL语句中的单引号处理以及模糊查询

    为了防止程序SQL语句错误以及SQL注入,单引号必须经过处理.有2种办法: 1.使用参数,比如SELECT * FROM yourTable WHERE name = @name; 在C#中使用Sql ...

  3. Oracle数据库之PL/SQL程序设计基础

    PL/SQL程序设计基础 一.PL/SQL块结构 前边我们已经介绍了PL/SQL块的结构,再来回顾一下: DECLARE /* * 声明部分——定义常量.变量.复杂数据类型.游标.用户自定义异常 */ ...

  4. Oracle数据库之PL/SQL程序基础设计

    一.PL/SQL块结构 前边我们已经介绍了PL/SQL块的结构,再来回顾一下: DECLARE /* * 声明部分——定义常量.变量.复杂数据类型.游标.用户自定义异常 */ BEGIN /* * 执 ...

  5. 如何编写 PL/SQL 程序

    本文的操作选用的数据库是oracle 数据库,登陆的用户是自带的scott用户,默认密码:tiger,有不懂得可以相互讨论一下,谢谢. 首先需要了解PL/SQL块的结构,PL/SQL块由定义部门.执行 ...

  6. oracle pl/sql程序

    简单的pl/sql程序 declare begin dbms_output.put_line('hello world'); end; 什么是PL/SQL? pl/sql(Procedure lang ...

  7. PL/SQL程序控制结构及在PL/SQL中更改数据和管理事务

    1.条件控制 A. IF条件分支语法: if (条件1) then 语句; elsif (条件2) then 语句; elsif (条件3) then 语句; else 语句; end if; B . ...

  8. PL/SQL学习笔记之数据类型中的标量、LOB

    一:标量 标量 即 基本数据类型,主要有4种:数值.字符.布尔类型.日期时间. 1:数值类型 数据类型 描述 PLS_INTEGER 通过2,147,483,647到-2147483648范围内有符号 ...

  9. Oracle PL/SQL 编程手册(SQL大全)

    一.SQLPLUS 1引言 SQL命令 以下17个是作为语句开头的关键字: alterdroprevoke auditgrantrollback* commit*inse ...

随机推荐

  1. Codeforces Round #403 (Div. 2, based on Technocup 2017 Finals) C Andryusha and Colored Balloons

    地址:http://codeforces.com/contest/782/problem/C 题目: C. Andryusha and Colored Balloons time limit per ...

  2. [转]loadrunner:系统的平均并发用户数和并发数峰值如何估算

    一.经典公式1: 一般来说,利用以下经验公式进行估算系统的平均并发用户数和峰值数据 1)平均并发用户数为 C = nL/T 2)并发用户数峰值 C‘ = C + 3*根号C C是平均并发用户数,n是l ...

  3. 网络虚拟化 SDN

    一.Linux Bridge :Linux中的网桥 假设宿主机有 1 块与外网连接的物理网卡 eth0,上面跑了 1 个虚机 VM1,现在有个问题是: 如何让 VM1 能够访问外网? 至少有两种方案 ...

  4. Linux centos7安装Mongodb

    Linux centos7安装Mongodb-4.0 1.下载 官方下载地址:https://www.mongodb.com/download-center/community 2.上传解压 1)rz ...

  5. Linux查看系统与内核信息(uname、file和lsb_release -a)

    uname 命令 uname 命令可以用来查看系统与内核的相关信息,命令格式如下: [root@localhost ~]# uname [选项] 选项: -a:查看系统所有相关信息: -r:查看内核版 ...

  6. 在DLL编程中,导出函数为什么需要extern "C"

    转自:http://blog.csdn.net/zhongjling/article/details/8088664 一般来讲,在DLL编程过程中,对于导出的函数前 都需要加入 extern “C”, ...

  7. Java哲学家进餐

    某次操作系统实验存档. 这个哲学家除了吃就是睡.. 哲学家.java: package operating.entity.philosophyeating; import operating.meth ...

  8. Windows下Yii2框架的两种安装方式及升级最新版

    第一种:归档文件形式安装(适合于没有安装composer的机器) 进入下载页https://www.yiiframework.com/download,选择下载第一个 下载完成之后是一个压缩包,解压文 ...

  9. SeekArc

    https://github.com/neild001/SeekArc https://github.com/imflyn/SeekArc

  10. 20145314郑凯杰 《Java程序设计》第4周学习总结

    20145314郑凯杰 <Java程序设计>第4周学习总结 所有代码已上传: 教材学习内容总结 ①继承 设计程序中,因们需要设计多个模块,我想到了李晓东以前教我们的三个字"模块化 ...