还是每次都实际评估?
Oracle 的文档没有具体说明。(或者也许是一个函数被认为是每次都被执行?)
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;
> select count(distinct ts) from timestamptest;
-------------------+
COUNT(DISTINCTTS) |
-------------------+
30 |
-------------------+
--BBB-- 的结果:
> select count(distinct ts) from timestamptest;
-------------------+
COUNT(DISTINCTTS) |
-------------------+
1 |
-------------------+