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.pswp.cn/news/445754.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/445754.shtml
英文地址,請注明出處:http://en.pswp.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 問題描述………