- 类别:
系统函数 (系统信息)
SYSTEM$STREAM_GET_TABLE_TIMESTAMP¶
返回位于指定流当前偏移处或之前的最新表版本的时间戳(以纳秒为单位)。查询(或使用)流时,返回的记录包括在此表版本之后和当前时间之前提交的所有事务。
备注
创建此函数主要是为了“引导”流(即返回在创建表[在表版本 t0
时]和创建指定流之间插入的记录集)。自从引入该函数以来,包含 CHANGES 子句的 CREATE STREAM 和 SELECT 语句现在支持使用 AT | BEFORE 子句进行 Time Travel。这些选项为查询历史表记录提供了更大的灵活性。
语法¶
SYSTEM$STREAM_GET_TABLE_TIMESTAMP('<stream_name>')
实参¶
stream_name
要查询的流的名称。
请注意,整个名称必须放在单引号内,包括数据库和架构(如果名称是完全限定名称),即
' <db>.<schema>.<stream_name>'
。如果流名称区分大小写或包含任何特殊字符或空格,则需要使用双引号来处理大小写/字符。双引号必须放在单引号内,即
'"<stream_name>"'
。
使用说明¶
当输入是视图上的流时,此函数将返回错误。
要在现有流的当前偏移处或之前创建流,我们建议提供现有流名称作为 AT | BEFORE 子句的输入,以简化操作并最大限度地兼容现有流:
CREATE STREAM ... AT ( STREAM => '<stream-name>' )
示例¶
查询流的当前偏移的时间戳:
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');