如下SQL:
select a,a from (
select trunc(dbms_random.value(0,36)) a from dual
);
在Oracle 9i 和10g中执行结果不同,10g中的结果才是期望的结果。
9i中2次输出的A的值竟然不同,10g中每次都是完全相同的。
但下面的SQL,只比上面的多了个where rownum < 2 , 9i和10g 无差异,都是每次输出相同的结果。
select a,a from (
select trunc(dbms_random.value(0,36)) a from dual where rownum < 2
);
怀疑是9i和10g的解析方式不同,请哪位高手给出更合理权威的解释。小弟在此先谢过啦!
本文深入探讨了Oracle9i和10g在执行特定SQL查询时,对于随机数生成的不同表现,特别是针对trunc(dbms_random.value(0,36))函数的输出差异,并提出了可能的解析方式不同导致结果不一致的原因。
6217

被折叠的 条评论
为什么被折叠?



