Oracle的SYSTIMESTAMP是否在单个事务中保持不变?

时间:2013-11-01 04:18:44

标签: oracle

或者每次实际评估它?

Oracle's documentation未指定。 (或者可能是函数被认为是每次都被执行的事实?)

1 个答案:

答案 0 :(得分:4)

SYSTIMESTAMP会针对每个语句进行评估,如下面的代码段所示。

但是,Oracle的documentation on Statement-Level Read Consistency似乎说当我在一个语句中多次使用systimestamp时,它总是会产生相同的值

评论为--AAA----BBB--

create table timestamptest (ts timestamp);

delete timestamptest;
declare now timestamp;
begin
  select systimestamp into now from dual;
  FOR i in 1..10000 LOOP
--AAA--   insert into timestamptest values (systimestamp);
--BBB--   insert into timestamptest values (now);
  END LOOP;
end;
/
select count(distinct ts) from timestamptest;

<小时/> 结果--AAA -

> select count(distinct ts) from timestamptest;
-------------------+
 COUNT(DISTINCTTS) |
-------------------+
                30 |
-------------------+

结果--BBB -

> select count(distinct ts) from timestamptest;
-------------------+
 COUNT(DISTINCTTS) |
-------------------+
                 1 |
-------------------+