0

我遇到了一种情况,我找不到可能的解释。

当我运行以下语句时

select 'local' src, sysdate, systimestamp from dual;

我得到了预期的结果

SRC   SYSDATE             SYSTIMESTAMP                        
----- ------------------- ------------------------------------
local 2022-02-28 15:03:07 2022-02-28 15:03:07,844496000 +03:00

但是,如果我添加一个 dblink,就会出现不一致:

select 'dblink' src, sysdate, systimestamp from dual@db;

返回

SRC    SYSDATE             SYSTIMESTAMP                        
------ ------------------- ------------------------------------
dblink 2022-02-28 15:04:36 2022-02-28 15:05:21,311410000 +03:00

如果我同时运行这两个语句

select 'local' src, sysdate, systimestamp from dual
union
select 'dblink' src, sysdate, systimestamp from dual@db;

结果再次正确:

SRC    SYSDATE             SYSTIMESTAMP                        
------ ------------------- ------------------------------------
dblink 2022-02-28 15:06:07 2022-02-28 15:06:07,092513000 +03:00
local  2022-02-28 15:06:07 2022-02-28 15:06:07,092513000 +03:00

我认为这可能会发生,因为 sysdate 和 systimestamp 在最后一个语句中只评估一次。

但是为什么第二条语句为两个函数返回不同的结果呢?

4

0 回答 0