2

还是每次都实际评估?

Oracle 的文档没有具体说明。(或者也许是一个函数被认为是每次都被执行?)

4

1 回答 1

4

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

但是,Oracle关于 Statement-Level Read Consistency 的文档似乎说,当我systimestamp在单个语句中多次使用时,它总是会导致相同的 value

评论--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 |
-------------------+
于 2013-11-01T04:23:09.813 回答