Вот пример SQL, о котором идет речь; SQL должен работать на любой СУБД Oracle (я запускаю 11.2.0.2.0).
Обратите внимание на то, как значения 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
Еще интереснее я могу изменить поведение/стабилизировать sys_guid, включив вызовы в DBMS_RANDOM.RANDOM:
WITH data AS (
SELECT SYS_GUID () uuid,
DBMS_RANDOM.random () rand
FROM DUAL)
SELECT uuid a,
uuid b,
rand c,
rand d
FROM data
SQL Fiddle, который стабилизирует SYS_GUID: http://sqlfiddle.com/#!4/d41d8/29409
SQL Fiddle Показывает нечетное поведение SYS_GUID: http://sqlfiddle.com/#!4/d41d8/29411