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
文档内容是否对您有帮助?