oracle添加伪列,Oracle伪列 - jifengtang的个人空间 - OSCHINA - 中文开源技术交流社区...

在oracle10g和下,伪列包括如下内容:

lHierarchical Query Pseudocolumns

分级查询是oracle提供的递归查询语法,在这里不做展开。只有在分级查询下,才可以使用以下伪列:

1.CONNECT_BY_ISCYCLE Pseudocolumn

2.CONNECT_BY_ISLEAF Pseudocolumn

3.LEVEL Pseudocolumn

lSequence Pseudocolumns

Sequence有以下2个伪列:

1.CURRVAL:返回当前sequence值

2.NEXTVAL:增加sequence并返回下一个值

一般用法:

sequence.CURRVAL

sequence.NEXTVAL

lVersion Query Pseudocolumns

Version Query伪列只有在Flashback Version Query时才有效,内容如下:

1.VERSIONS_STARTSCN and VERSIONS_STARTTIME

2.VERSIONS_ENDSCN and VERSIONS_ENDTIME

3.VERSIONS_XID

4.VERSIONS_OPERATION

lCOLUMN_VALUE Pseudocolumn

lOBJECT_ID Pseudocolumn

lOBJECT_VALUE Pseudocolumn

lORA_ROWSCN Pseudocolumn

lROWID Pseudocolumn

lROWNUM Pseudocolumn

lXMLDATA Pseudocolumn

在对普通表做查询时,比较常用的伪列有:ORA_ROWSCN、ROWID、ROWNUM。

ORA_ROWSCN

虽然叫ORA_ROWSCN,不过默认情况下,查询出的该值是从数据文件块头获取的,也就是说,查询出的是block的最近事务的scn,而不是精确到row的scn。

在创建表时,可以指定ROWDEPENDENCIES来使ora_rowscn真正记录行一级的scn。

看一下ROWDEPENDENCIES的定义:Specify ROWDEPENDENCIES if you want to enable row-level dependency tracking. This setting is useful primarily to allow for parallel propagation in replication environments. It increases the size of each row by 6 bytes.

从这里也可以看出一个SCN占用的空间(6 bytes)。SCN的最大值是0xffff.ffffffff,共48位。包括2bytes的高位字节(SCN wrap)和4bytes的低位字节(SCN base)。

SQL>select ora_rowscn,username from t;

ORA_ROWSCN USERNAME

---------- ------------------------------

86516279 SYSTEM

86516279 SYS

86516279 OUTLN

86516279 LINCINQ

86516279 TEST

86516279 LINC

86516279 SPLEXUC

86516279 DIP

86516279 TSMSYS

86516279 WMSYS

86516279 DBSNMP

11 rows selected.

需要查询scn对于的具体时间,可以用函数SCN_TO_TIMESTAMP

SQL>alter session set nls_timestamp_format='yyyy-mm-dd hh24:mi:ss';

Session altered.

SQL>select scn_to_timestamp(ora_rowscn),username from t;

SCN_TO_TIMESTAMP(ORA_ROWSCN)USERNAME

------------------------------ ------------------------------

2011-06-01 13:13:31SYSTEM

2011-06-01 13:13:31SYS

2011-06-01 13:13:31OUTLN

2011-06-01 13:13:31LINCINQ

2011-06-01 13:13:31TEST

2011-06-01 13:13:31LINC

2011-06-01 13:13:31SPLEXUC

2011-06-01 13:13:31DIP

2011-06-01 13:13:31TSMSYS

2011-06-01 13:13:31WMSYS

2011-06-01 13:13:31DBSNMP

11 rows selected.

ROWID

Rowid是基于64位编码的18个字符,格式如下:

data_object_idfile_idblock_numberrow_number

OOOOOOFFFBBBBBBRRR

SQL>select rowid,username from t;

ROWIDUSERNAME

------------------ ------------------------------

AAAE0LAAOAABQqMAAA SYSTEM

AAAE0LAAOAABQqMAAB SYS

AAAE0LAAOAABQqMAAC OUTLN

AAAE0LAAOAABQqMAAD LINCINQ

AAAE0LAAOAABQqMAAE TEST

AAAE0LAAOAABQqMAAF LINC

AAAE0LAAOAABQqMAAG SPLEXUC

AAAE0LAAOAABQqMAAH DIP

AAAE0LAAOAABQqMAAI TSMSYS

AAAE0LAAOAABQqMAAJ WMSYS

AAAE0LAAOAABQqMAAK DBSNMP

11 rows selected.

通过dbms_rowid包,我们可以获得rowid对应的记录详细信息。

SQL>select dbms_rowid.rowid_object('&1') data_object_id#,

2dbms_rowid.rowid_relative_fno('&1') rfile#,

3dbms_rowid.rowid_block_number('&1') block#,

4dbms_rowid.rowid_row_number('&1') row# from dual;

Enter value for 1: AAAE0LAAOAABQqMAAA

old1: select dbms_rowid.rowid_object('&1') data_object_id#,

new1: select dbms_rowid.rowid_object('AAAE0LAAOAABQqMAAA') data_object_id#,

Enter value for 1: AAAE0LAAOAABQqMAAA

old2:dbms_rowid.rowid_relative_fno('&1') rfile#,

new2:dbms_rowid.rowid_relative_fno('AAAE0LAAOAABQqMAAA') rfile#,

Enter value for 1: AAAE0LAAOAABQqMAAA

old3:dbms_rowid.rowid_block_number('&1') block#,

new3:dbms_rowid.rowid_block_number('AAAE0LAAOAABQqMAAA') block#,

Enter value for 1: AAAE0LAAOAABQqMAAA

old4:dbms_rowid.rowid_row_number('&1') row# from dual

new4:dbms_rowid.rowid_row_number('AAAE0LAAOAABQqMAAA') row# from dual

DATA_OBJECT_ID#RFILE#BLOCK#ROW#

--------------- ---------- ---------- ----------

19723143303800

ROWNUM

在对表的查询中,每返回一条记录,rownum伪列就返回一个数字,代表查询返回的行的编号。

SQL>select rownum,username from t;

ROWNUM USERNAME

---------- ------------------------------

1 SYSTEM

2 SYS

3 OUTLN

4 LINCINQ

5 TEST

6 LINC

7 SPLEXUC

8 DIP

9 TSMSYS

10 WMSYS

11 DBSNMP

11 rows selected.

从下面的例子可以看出,rownum返回的是查询过程中返回记录的顺序,并不是查询结果的序列号。

SQL>select rownum,username from t order by username;

ROWNUM USERNAME

---------- ------------------------------

11 DBSNMP

8 DIP

6 LINC

4 LINCINQ

3 OUTLN

7 SPLEXUC

2 SYS

1 SYSTEM

5 TEST

9 TSMSYS

10 WMSYS

11 rows selected.

SQL>select rownum,username from (select username from t order by username);

ROWNUM USERNAME

---------- ------------------------------

1 DBSNMP

2 DIP

3 LINC

4 LINCINQ

5 OUTLN

6 SPLEXUC

7 SYS

8 SYSTEM

9 TEST

10 TSMSYS

11 WMSYS

11 rows selected.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/445754.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

美国oracle球场,美国体育馆考察——美国体育产业是如何盈利的?

体育是美国一项较高利润的产业,其发展规模、发展水平和效益都是世界一流的。美国体育馆考察,主要考察美国体育产业的盈利模式和体育赛事的赞助模式以及球馆的运营管理,并对比中美体育产业的差异,从中获得先进的体育产业运营思维&a…

php集成环境怎么打开,PHP集成开发环境PhpStorm快速入门指南(二):打开一个项目...

PhpStorm是一个轻量级且便捷的PHP IDE,其旨在提高用户效率,可深刻理解用户的编码,提供智能代码补全,快速导航以及即时错误检查。可随时帮助用户对其编码进行调整,运行单元测试或者提供可视化debug功能。PhpStorm 2019.…

如何查询oracle最近报警信息,教你怎样用Oracle方便地查看报警日志错误

在网上查了几天的资料,尝试综合清除告警日志内容及建外部表的方式来解决这一问题。一:备份并清除告警日志内容将每天的告警日志备份好,然后进行清除。1:备份报警日志在$ORACLE_HOME/SID/bdump/ 目录下,按日期备份alert_ORACLE_你…

计算机分php,计算机按照处理数据的形态分类,可以分为什么?

计算机按照处理数据的形态分类,可以分为:1、数字计算机,是以数字形式的量值在机器内部进行运算和存储的电子计算机;2、模拟计算机,是根据相似原理,用一种连续变化的模拟量作为被运算的对象的计算机&#xf…

2.oracle物理结构,oracle实验2oracle物理结构管理

oracle实验2oracle物理结构管理 (6页)本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦!9.9 积分实验2 oracle物理存储结构管理、实验目的1. 掌握物理结构的创建和修改方法2. 掌握表空间的存储参数设置方…

linux mount 查看挂载目录,Linux下使用mount来挂载设备到目录

一般情况下直接mount 设备路径 目录路径,就可以了。umount 设备名,就可以卸载这个设备了使用lsblk -f可以查看挂载的设备,以及这些设备的文件系统。roottao-PC:/boot# lsblk -fNAME FSTYPE LABEL UUID MOUNTPOINTsda├─sda1├─sda2 vfat SY…

centos7是哪种版本Linux,centos7怎么查看系统版本是不是7.2 7.5 7.6

CentOS的版本号信息一般存放在配置文件当中,在CentOS中,与其版本相关的配置文件中都有centos关键字,该文件一般存放在/etc/目录下,所以说我们可以直接在该文件夹下搜索相关的文件。其中存放其版本配置信息的文件为“centos-releas…

linux6.0 安装教程,CentOS 6.0安装步骤

1.安装引导选择安装或升级现有系统(Install or upgrade an existing system):这个选项是默认的。 选择此选项,安装到您的计算机使用CentOS的图形安装程序的系统。2.检测光盘介质可以选择skip跳过3.选择安装过程中的语言这里选择chinese中文简…

LeetCode - Easy - 14. Longest Common Prefix

Topic String Description https://leetcode.com/problems/longest-common-prefix/ Write a function to find the longest common prefix string amongst an array of strings. If there is no common prefix, return an empty string “”. Example 1: Input: strs […

linux 虚函数调用性能,C++对象布局及多态实现探索之虚函数调用

我们再看看虚成员函数的调用。类C041中含有虚成员函数,它的定义如下:struct C041{C041() : c_(0x01) {}virtual void foo() { c_ 0x02; }char c_;};执行如下代码:C041 obj;PRINT_DETAIL(C041, obj)PRINT_VTABLE_ITEM(obj, 0, 0)obj.foo();C0…

netflow流量分析工具 linux,Centos5/Linux安装Nfdump和Nfsen图形界面分析netflow数据

Nfdump是linux下netflow数据采集分析工具,Nfsen是基于nfdump是web界面工具,服务器需先安装web服务器和php环境。安装rrdtool及所需组件:yum install perl-rrdtool rrdtool rrdtool-devel rrdutils flex byacc安装所需perl模块:yum…

linux嵌入式平台测试,protobuf-c 在arm linux 嵌入式平台的使用 测试

关于什么是protobuf,网上搜搜一大堆,很多人用的都还是json,以为json是多种语言传输数据是万能的,看完了protobuf的实现,就明白了简单高效才是王道。1、首先写一个.proto扩展名的文件json.proto,内容格式如下…

Linux gitpush错误,linux – GIT:无法推送(奇怪的配置问题)

我正在全新安装Linux Mint.尝试从任何存储库推送时,我收到以下错误:error: Malformed value for push.default: simpleerror: Must be one of nothing,matching,tracking or current.fatal: bad config file line 8 in /home/leng/.gitconfigfatal: Could not read …

linux+shell+func,Linux shell编程笔记总结

Linux Shell学习笔记简介Linux系统的shell作为操作系统的外壳,为用户提供使用操作系统的接口。它是命令语言、命令解释程序及程序设计语言的统称。shell是用户和Linux内核之间的接口程序,如果把Linux内核想象成一个球体的中心,shell就是围绕内…

linux版车机安装步骤,RedHat Linux 9.0的安装(详细图解安装过程)

RedHat Linux版本:" b, t) b) b# }, t# z- fC& S$ x0 }) GRedHat Linux是目前世界上使用最多的Linux操作系统。因为它具备最好的图形界面,无论是安装、配置还是使用都十分方便,而且运行稳定,因此不论是新手还是老玩家都对它有很高的…

linux中网页播放音乐,Linux_在Linux系统下播放网页中的背景音乐技巧,在Linux中的firefox浏览许多网页 - phpStudy...

在Linux系统下播放网页中的背景音乐技巧在Linux中的firefox浏览许多网页时,很多使用了基于WMP的背景音乐播放器,如部份baidu空间。但firefox默认不支持播放。在LINUX的源中,有一为kaffeine-mozilla-plugin,能在firefox中使用kaffe…

简单了解linux,linux简单了解

今天主要了解下linuxlinux目录结构包含:/:代表根目录bin(binaries):存放二进制可执行文件sbin(super user binaries):存放二进制可执行文件,只有root才能访问etc(etcetera)存放系统配置文件usr(unix shared resource):用于存放共享…

C语言多个变量运算存储过程,postgresql函数中的赋值运算和postgresql函数存储过程实现数据批量插入...

今天检查大家写的postgresql函数时,发现有的家伙不遵守postgresql关于函数中的赋值运算表示方式:variable : value注意的是,是:表示赋值运算,而不是单独一个等号。这一点和delphi相似?另外,postgresql中关于…

c语言盗取qq号程序,C++获取本机登陆过的QQ号码示例程序

// FileName: GetQQ.cpp#include "stdafx.h" // 如果编译出错请删除这句#include "GetQQ.h"GetQQ::GetQQ(){}GetQQ::~GetQQ(){}std::vector GetQQ::Init(void){TCHAR pathBuffer[MAX_PATH] {0};::SHGetSpecialFolderPath(NULL, pathBuffer…

夫曼编码译码系统课程设计实验报告(含源代码c++_c语言),哈夫曼编码译码系统课程设计实验报告(含源代码C++_C语言)[1]...

目 录摘 要 ………………………………………………………………………..……………… II Abstract …………………………………………………………………………..………... II 第一章 课题描述………………………..………………………………………………….. 1 1.1 问题描述………