Możesz użyć DBMS_SQLHASH.GETHASH
dla tego. Wyniki zapytania muszą być uporządkowane i nie mogą zawierać żadnych obiektów LOB, w przeciwnym razie wyniki nie będą deterministyczne.
select dbms_sqlhash.gethash(q'[select * from some_table order by 1,2]', digest_type => 1)
from dual;
Gdzie typ_podsumowania 1 =HASH_MD4, 2 =HASH_MD5, 3 =HASH_SH1.
Ten pakiet nie jest domyślnie przyznawany nikomu. Aby go użyć, potrzebujesz kogoś, kto zaloguje się jako SYS i uruchomi to:
SQL> grant execute on dbms_sqlhash to <your_user>;
Wyniki zapytania muszą być uporządkowane, jak opisano w „Błąd 17082212:DBMS_SQLHASH RÓŻNE WYNIKI Z RÓŻNEJ ŚCIEŻKI DOSTĘPU”.
Nie jestem pewien, dlaczego LOB nie działają, ale może to być związane ze sposobem, w jaki funkcja ORA_HASH
nie działa dobrze z obiektami LOB. Ten artykuł Jonathana Lewisa zawiera kilka przykładów ORA_HASH
zwracanie różnych wyników dla tych samych danych LOB. A ostatnie wersje SQL Language Reference ostrzegają, że ORA_HASH
nie obsługuje obiektów LOB.