zoukankan      html  css  js  c++  java
  • 七、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;

  • 相关阅读:
    eclipse文件编辑器相关概念
    Oracle ROLLUP和CUBE 用法
    eclipse插件开发常用的选择器
    oracle多cpu并行查询
    MYECLISE6.5下CDT安装
    oracle SAMPLE 语法应用
    常用的gcc命令
    vbscript获取本机的ip地址和mac地址
    什么是Single Sign On
    eclipse插件开发中全局对象的获取
  • 原文地址:https://www.cnblogs.com/champaign/p/9468521.html
Copyright © 2011-2022 走看看