Du kan använda DBMS_SQLHASH.GETHASH
för detta. Frågeresultaten måste ordnas och får inte innehålla några LOB, annars blir resultaten inte deterministiska.
select dbms_sqlhash.gethash(q'[select * from some_table order by 1,2]', digest_type => 1)
from dual;
Där digest_type 1 =HASH_MD4, 2 =HASH_MD5, 3 =HASH_SH1.
Det paketet beviljas inte till någon som standard. För att använda det behöver du någon som loggar in som SYS och kör detta:
SQL> grant execute on dbms_sqlhash to <your_user>;
Frågeresultaten måste beställas enligt beskrivningen i "Bug 17082212 :DBMS_SQLHASH OLIKA RESULTAT FRÅN OLIKA ÅTKOMSTSväg".
Jag är inte säker på varför LOB:er inte fungerar, men det kan vara relaterat till hur funktionen ORA_HASH
fungerar fungerar inte bra med LOB. Den här Jonathan Lewis-artikeln innehåller några exempel på ORA_HASH
returnerar olika resultat för samma LOB-data. Och de senaste versionerna av SQL Language Reference varnar för att ORA_HASH
stöder inte LOB.