Можете да използвате DBMS_SQLHASH.GETHASH
за това. Резултатите от заявката трябва да бъдат подредени и не трябва да съдържат LOB, или резултатите няма да са детерминистични.
select dbms_sqlhash.gethash(q'[select * from some_table order by 1,2]', digest_type => 1)
from dual;
Където digest_type 1 =HASH_MD4, 2 =HASH_MD5, 3 =HASH_SH1.
Този пакет не се предоставя на никого по подразбиране. За да го използвате, ще ви трябва някой, който да влезе като SYS и да стартира това:
SQL> grant execute on dbms_sqlhash to <your_user>;
Резултатите от заявката трябва да бъдат подредени, както е описано в "Бъг 17082212 :DBMS_SQLHASH РАЗЛИЧНИ РЕЗУЛТАТИ ОТ РАЗЛИЧЕН ПЪТ ЗА ДОСТЪП".
Не съм сигурен защо LOB не работят, но може да е свързано с начина, по който функцията ORA_HASH
не работи добре с LOB. Тази статия на Джонатан Луис включва някои примери за ORA_HASH
връщане на различни резултати за едни и същи LOB данни. И последните версии на SQL Language Reference предупреждават, че ORA_HASH
не поддържа LOB.