CURRENT TEMPORAL SYSTEM_TIME 专用寄存器

CURRENT TEMPORAL SYSTEM_TIME 专用寄存器指定在缺省 SYSTEM_TIME 时间段规范中用于引用系统时间段时态表的 TIMESTAMP (12) 值。

当引用了系统时间段时态表并且 CURRENT TEMPORAL SYSTEM_TIME 专用寄存器的有效值由 CTST(非空值) 表示时,将隐式指定以下时间段:
FOR SYSTEM_TIME AS OF CTST

用户定义的函数或过程中专用寄存器的初始值是从调用应用程序继承的。 在其他上下文中,此专用寄存器的初始值是空值。

可以通过执行 SET CURRENT TEMPORAL SYSTEM_TIME 语句来更改此专用寄存器的值。

如果已使用 SYSTIMESENSITIVE 绑定选项设置为 YES 来绑定下列已编译 SQL 对象,那么 CURRENT TEMPORAL SYSTEM_TIME 专用寄存器的设置会影响这些对象:
  • SQL 过程
  • 编译型函数
  • 编译型触发器
  • 复合 SQL(编译型)语句
  • 外部 UDF)
SYSTIMESENSITIVE 绑定选项的设置确定对程序包中静态 SQL 语句和动态 SQL 语句中的系统周期时态表的引用是否受 CURRENT TEMPORAL SYSTEM_TIME 专用寄存器的值影响。 绑定选项可以设置为 YES 或 NO。

对于以下示例,假定 IN_TRAY 表是系统周期时态表。

示例 1: 根据 IN_TRAY 中的消息截至 CURRENT TEMPORAL SYSTEM_TIME 专用寄存器指定的日期的状态,列出用户标识和主题行。
SELECT SOURCE, SUBJECT 
    FROM IN_TRAY
假定 CURRENT TEMPORAL SYSTEM_TIME 专用寄存器先前已设置为值 CURRENT TIMESTAMP-7 DAYS ,并且当前设置为空值,那么以下语句将返回相同的结果。
SELECT SOURCE, SUBJECT 
    FROM IN_TRAY 
    FOR SYSTEM_TIME AS OF CURRENT TEMPORAL SYSTEM_TIME
示例 2: 列出 IN_TRAY 中在 CURRENT TEMPORAL SYSTEM_TIME 专用寄存器指定的值之前发送的消息的用户标识和主题行。
SELECT SOURCE, SUBJECT 
    FROM IN_TRAY
    WHERE RECEIVED < CURRENT TEMPORAL SYSTEM_TIME
假定 CURRENT TEMPORAL SYSTEM_TIME 专用寄存器先前已设置为 "2011-01-01-00.00.00" ,并且当前设置为空值,那么以下语句将返回相同的结果。
SELECT SOURCE, SUBJECT
    FROM IN_TRAY
    FOR SYSTEM_TIME AS OF '2011-01-01-00.00.00'
    WHERE DATE(RECEIVED) < DATE('2011-01-01-00.00.00')