Du kan bruge DBMS_SQLHASH.GETHASH
for det. Forespørgselsresultaterne skal ordnes og må ikke indeholde nogen LOB'er, ellers vil resultaterne ikke være deterministiske.
select dbms_sqlhash.gethash(q'[select * from some_table order by 1,2]', digest_type => 1)
from dual;
Hvor digest_type 1 =HASH_MD4, 2 =HASH_MD5, 3 =HASH_SH1.
Denne pakke er ikke givet til nogen som standard. For at bruge det, skal du have nogen til at logge på som SYS og køre dette:
SQL> grant execute on dbms_sqlhash to <your_user>;
Forespørgselsresultaterne skal bestilles, som beskrevet i "Bug 17082212:DBMS_SQLHASH FORSKELLIGE RESULTATER FRA ANDEN ADGANGSTI".
Jeg er ikke sikker på, hvorfor LOB'er ikke virker, men det kan være relateret til den måde, funktionen ORA_HASH
på fungerer ikke godt med LOB'er. Denne Jonathan Lewis-artikel indeholder nogle eksempler på ORA_HASH
returnerer forskellige resultater for de samme LOB-data. Og nyere versioner af SQL Language Reference advarer om, at ORA_HASH
understøtter ikke LOB'er.