Oracle的SYSTIMESTAMP是否在单个事务中保持不变?
还是每次都要进行评估 没有具体说明。或者可能是因为函数被认为是每次都执行的吗?SYSTIMESTAMP会为每个语句求值,如下代码段所示 然而,Oracle似乎说,当我在一条语句中多次使用systimestamp时,它总是会产生相同的值 在-AAA-或-BBB-中进行注释: -AAA-的结果: -BBB-的结果: SYSTIMESTAMP将为每个语句求值,如下代码段所示 然而,Oracle似乎说,当我在一条语句中多次使用systimestamp时,它总是会产生相同的值 在-AAA-或-BBB-中进行注释: -AAA-的结果: -BBB-的结果:Oracle的SYSTIMESTAMP是否在单个事务中保持不变?,oracle,Oracle,还是每次都要进行评估 没有具体说明。或者可能是因为函数被认为是每次都执行的吗?SYSTIMESTAMP会为每个语句求值,如下代码段所示 然而,Oracle似乎说,当我在一条语句中多次使用systimestamp时,它总是会产生相同的值 在-AAA-或-BBB-中进行注释: -AAA-的结果: -BBB-的结果: SYSTIMESTAMP将为每个语句求值,如下代码段所示 然而,Oracle似乎说,当我在一条语句中多次使用systimestamp时,它总是会产生相同的值 在-AAA-或-BBB-中
+1还值得注意的是,SYSTIMESTAMP和SYSDATE在单个语句中甚至不一定是常量,这取决于上下文。有关详细信息,请参见我对的回答。+1还值得注意的是,SYSTIMESTAMP和SYSDATE在单个语句中甚至不一定是常量,这取决于上下文。有关详细信息,请参阅我对的答复。
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 |
-------------------+
> select count(distinct ts) from timestamptest;
-------------------+
COUNT(DISTINCTTS) |
-------------------+
1 |
-------------------+