U kunt DBMS_SQLHASH.GETHASH
. gebruiken voor deze. De zoekopdrachtresultaten moeten geordend zijn en mogen geen LOB's bevatten, anders zijn de resultaten niet bepalend.
select dbms_sqlhash.gethash(q'[select * from some_table order by 1,2]', digest_type => 1)
from dual;
Waarbij digest_type 1 =HASH_MD4, 2 =HASH_MD5, 3 =HASH_SH1.
Dat pakket wordt standaard aan niemand toegekend. Om het te gebruiken, moet je iemand hebben die inlogt als SYS en dit uitvoert:
SQL> grant execute on dbms_sqlhash to <your_user>;
De queryresultaten moeten worden geordend, zoals beschreven in "Bug 17082212:DBMS_SQLHASH VERSCHILLENDE RESULTATEN VAN VERSCHILLEND TOEGANGSPAD".
Ik weet niet zeker waarom LOB's niet werken, maar het kan te maken hebben met de manier waarop de functie ORA_HASH
werkt niet goed met LOB's. Dit Jonathan Lewis-artikel bevat enkele voorbeelden van ORA_HASH
het retourneren van verschillende resultaten voor dezelfde LOB-gegevens. En recente versies van de SQL Language Reference waarschuwen dat ORA_HASH
ondersteunt geen LOB's.