或者每次实际评估它?
Oracle's documentation未指定。 (或者可能是函数被认为是每次都被执行的事实?)
答案 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 |
-------------------+