Dataphin管道任务可以读取Oracle数据源的伪列吗

更新时间:

概述

Dataphin管道任务可以读取Oracle数据源的伪列吗?

详细信息

管道任务读不到rowid。伪列只在数据库内部使用。

伪列类似表的列,但不实际存在于表中。不能插入或删除伪列的值。伪列可使用CURRVAL,NEXTVAL,LEVEL,ROWID,ROWNUM。

currval返回序列的当前值,

nextval使序列增值并返回新的取值,

currval,nextval都返回number数值。

rowid唯一标识每条记录所在的位置,它作为一个伪列在查询中出现

1、它并不能指示出行的物理位置,但可以用来定位行。

2、rowid是存储在索引中的一组既定的值(当行确定后)。我们可以像表中普通的列一样将它选出来。
3、利用rowid是访问表中一行的最快方式。
4、rowid需要10个字节来存储,由18个字符组成分4个部分,分别是:

     6个字符的对象编号,3个字符的文件号,6个字符的块编号,3个字符的行编号。

     ROWID                  
     ------------------
     AAAMfPAAEAAAAAgAAH


col object_id for a15

col file_id for a15

col block_id for a15

col row_num for a15

select rowid,

substr(rowid,1,6)||' : '||dbms_rowid.rowid_object(rowid)  object_id,           --数据对象编号

substr(rowid,7,3)||' : '||dbms_rowid.rowid_relative_fno(rowid) file_id,           --文件编号

substr(rowid,10,6)||' : '||dbms_rowid.rowid_block_number(rowid) block_id,      --块编号

substr(rowid,16,3)||' : '||dbms_rowid.ROWID_ROW_NUMBER(rowid) row_num      --行编号

from emp

where empno=7788 

适用于

  • Dataphin