这是有问题的示例SQL; SQL应该在任何Oracle DBMS上运行(我运行的是11.2.0.2.0).
注意尽管是在内联视图/ with子句中构建的,但结果集中的UUID值是如何不同的(一个具有898,另一个具有899).在下面你可以看到DBMS_RANDOM.RANDOM()没有这种副作用.
SQL:
WITH data AS (SELECT SYS_GUID () uuid FROM DUAL) SELECT uuid, uuid FROM data
输出:
UUID UUID_1 F8FCA4B4D8982B55E0440000BEA88F11 F8FCA4B4D8992B55E0440000BEA88F11
在Contrast DBMS_RANDOM中 ,结果是相同的
SQL:
WITH data AS (SELECT DBMS_RANDOM.RANDOM() rand FROM DUAL) SELECT rand, rand FROM data
输出:
RAND RAND_1 92518726 92518726
更有趣的是我可以通过包含对DBMS_RANDOM.RANDOM的调用来更改行为/稳定sys_guid:
WITH data AS ( SELECT SYS_GUID () uuid, DBMS_RANDOM.random () rand FROM DUAL) SELECT uuid a, uuid b, rand c, rand d FROM data
稳定SYS_GUID的SQL小提琴:http://sqlfiddle.com/#!4/d41d8/29409
SQL Fiddle显示奇怪的SYS_GUID行为:http://sqlfiddle.com/#!4/d41d8/29411