类别:

系统函数 (系统信息)

SYSTEM$STREAM_GET_TABLE_TIMESTAMP

返回位于指定流当前偏移处或之前的最新表版本的时间戳(以纳秒为单位)。查询(或使用)流时,返回的记录包括在此表版本之后和当前时间之前提交的所有事务。

备注

创建此函数主要是为了“引导”流(即返回在创建表[在表版本 t0 时]和创建指定流之间插入的记录集)。自从引入该函数以来,包含 CHANGES 子句的 CREATE STREAMSELECT 语句现在支持使用 AT | BEFORE 子句进行 Time Travel。这些选项为查询历史表记录提供了更大的灵活性。

语法

SYSTEM$STREAM_GET_TABLE_TIMESTAMP('<stream_name>')
Copy

实参

stream_name

要查询的流的名称。

  • 请注意,整个名称必须放在单引号内,包括数据库和架构(如果名称是完全限定名称),即 ' <db>.<schema>.<stream_name>'

  • 如果流名称区分大小写或包含任何特殊字符或空格,则需要使用双引号来处理大小写/字符。双引号必须放在单引号内,即 '"<stream_name>"'

使用说明

  • 当输入是视图上的流时,此函数将返回错误。

    要在现有流的当前偏移处或之前创建流,我们建议提供现有流名称作为 AT | BEFORE 子句的输入,以简化操作并最大限度地兼容现有流:

    CREATE STREAM ... AT ( STREAM => '<stream-name>' )
    
    Copy

示例

查询流的当前偏移的时间戳:

create table MYTABLE1 (id int);

create table MYTABLE2(id int);

create or replace stream MYSTREAM on table MYTABLE1;

insert into MYTABLE1 values (1);

-- consume the stream
begin;
insert into MYTABLE2 select id from MYSTREAM;
commit;

-- return the current offset for the stream
select system$stream_get_table_timestamp('MYSTREAM');
Copy
语言: 中文