七、dbms_rowid(用于在PL/SQL程序和SQL语句中取得行标识符)
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语句中取得行标识符)的更多相关文章
- c# sql在where查询语句中使用字符串变量与int型变量
使用where语句访问数据库时where语句用上文中以及定义过的变量来查询. string sql3 = string.Format("update Ships set ContainerN ...
- SQL语句中的单引号处理以及模糊查询
为了防止程序SQL语句错误以及SQL注入,单引号必须经过处理.有2种办法: 1.使用参数,比如SELECT * FROM yourTable WHERE name = @name; 在C#中使用Sql ...
- Oracle数据库之PL/SQL程序设计基础
PL/SQL程序设计基础 一.PL/SQL块结构 前边我们已经介绍了PL/SQL块的结构,再来回顾一下: DECLARE /* * 声明部分——定义常量.变量.复杂数据类型.游标.用户自定义异常 */ ...
- Oracle数据库之PL/SQL程序基础设计
一.PL/SQL块结构 前边我们已经介绍了PL/SQL块的结构,再来回顾一下: DECLARE /* * 声明部分——定义常量.变量.复杂数据类型.游标.用户自定义异常 */ BEGIN /* * 执 ...
- 如何编写 PL/SQL 程序
本文的操作选用的数据库是oracle 数据库,登陆的用户是自带的scott用户,默认密码:tiger,有不懂得可以相互讨论一下,谢谢. 首先需要了解PL/SQL块的结构,PL/SQL块由定义部门.执行 ...
- oracle pl/sql程序
简单的pl/sql程序 declare begin dbms_output.put_line('hello world'); end; 什么是PL/SQL? pl/sql(Procedure lang ...
- PL/SQL程序控制结构及在PL/SQL中更改数据和管理事务
1.条件控制 A. IF条件分支语法: if (条件1) then 语句; elsif (条件2) then 语句; elsif (条件3) then 语句; else 语句; end if; B . ...
- PL/SQL学习笔记之数据类型中的标量、LOB
一:标量 标量 即 基本数据类型,主要有4种:数值.字符.布尔类型.日期时间. 1:数值类型 数据类型 描述 PLS_INTEGER 通过2,147,483,647到-2147483648范围内有符号 ...
- Oracle PL/SQL 编程手册(SQL大全)
一.SQLPLUS 1引言 SQL命令 以下17个是作为语句开头的关键字: alterdroprevoke auditgrantrollback* commit*inse ...
随机推荐
- cocostudio 在VS模拟器中加载资源显示混乱问题
这个是由于cocos2d-x的资源是统一按照文件名管理的,所以游戏全局不能有重名. PS:所有用到的素材名字必须单一.
- ELK日志系统
ELK stack是又Elasticsearch,lostash,kibana 三个开源软件的组合而成,形成一款强大的实时日志收集分析展示系统. Logstash:日志收集工具,可以从本地磁盘,网络服 ...
- Ubuntu16.04 Docker 安装
前提条件 Docker 要求 Ubuntu 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的 Ubuntu 版本是否支持 Docker. 通过 uname -r 命令查看你当前的内核版本 ...
- Promise原理剖析
传统的异步回调编程最大的缺陷是:回调地狱,由于业务逻辑非常复杂,代码串行请求好几层:并行请求以前也要通过引用step.async库实现.现在ES6推出了Promise,通过Promise的链式调用可以 ...
- 20145215《Java程序设计》第二周学习总结
教材内容总结 类型.变量与运算符 *基本类型 整数(short.int.long) 字节(byte) 浮点数(float/double) 字符(char)将一个数字字母或者符号用单引号标识,字符串用双 ...
- 20145333 《Java程序设计》第二次实验报告
2014333 <Java程序设计>第二次实验报告 课程:Java程序设计 指导教师:娄嘉鹏 实验日期:2016.04.12 实验名称:Java面向对象程序设计 实验内容 初步掌握单元测试 ...
- Kali视频学习1-5
Kali视频学习1-5 安装 安装Kali虚拟机 设置网络更新,使用了163的源 deb http://mirrors.163.com/debian wheezy main non-free cont ...
- php7不支持curl
百度出来的东西没有一个有用的 终极解决方案: 1.将extension=curl前的分号去掉: 2.将php目录下的libssh2.dll放到apache安装目录的bin目录下 3.重启apache ...
- tiny4412的烧录工具minitool安装【学习笔记】
烧录了半天,在win10下一直就是烧录不进去,但是在Ubuntuh环境却可以,找了很久终于找到了,原来在win10安装minitool驱动的时候没有注意到报了错误,错误内容是驱动的数字签名问题,后来禁 ...
- MySQL—记录的增删改查操作
1.插入记录: 方法一:INSERT [INTO] tbl_name [(col_name,···)] {VALUES|VALUE} ({expr |DEFAULT},···),(···),··· 例 ...