Puede usar DBMS_SQLHASH.GETHASH
para esto. Los resultados de la consulta deben estar ordenados y no deben contener ningún LOB, o los resultados no serán deterministas.
select dbms_sqlhash.gethash(q'[select * from some_table order by 1,2]', digest_type => 1)
from dual;
Donde digest_type 1 =HASH_MD4, 2 =HASH_MD5, 3 =HASH_SH1.
Ese paquete no se otorga a nadie por defecto. Para usarlo, necesitará que alguien inicie sesión como SYS y ejecute esto:
SQL> grant execute on dbms_sqlhash to <your_user>;
Los resultados de la consulta se deben ordenar, como se describe en "Error 17082212:DBMS_SQLHASH DIFERENTES RESULTADOS DE DIFERENTES RUTAS DE ACCESO".
No estoy seguro de por qué los LOB no funcionan, pero podría estar relacionado con la forma en que la función ORA_HASH
no funciona bien con LOB. Este artículo de Jonathan Lewis incluye algunos ejemplos de ORA_HASH
devolviendo diferentes resultados para los mismos datos LOB. Y las versiones recientes de SQL Language Reference advierten que ORA_HASH
no admite LOB.