Anda dapat menggunakan DBMS_SQLHASH.GETHASH
untuk ini. Hasil kueri harus diurutkan dan tidak boleh berisi LOB apa pun, atau hasilnya tidak akan bersifat deterministik.
select dbms_sqlhash.gethash(q'[select * from some_table order by 1,2]', digest_type => 1)
from dual;
Di mana digest_type 1 =HASH_MD4, 2 =HASH_MD5, 3 =HASH_SH1.
Paket itu tidak diberikan kepada siapa pun secara default. Untuk menggunakannya, Anda memerlukan seseorang untuk masuk sebagai SYS dan menjalankan ini:
SQL> grant execute on dbms_sqlhash to <your_user>;
Hasil kueri harus diurutkan, seperti yang dijelaskan dalam "Bug 17082212 :DBMS_SQLHASH HASIL BERBEDA DARI JALAN AKSES BERBEDA".
Saya tidak yakin mengapa LOB tidak berfungsi, tetapi mungkin terkait dengan cara fungsi ORA_HASH
tidak bekerja dengan baik dengan LOB. Artikel Jonathan Lewis ini menyertakan beberapa contoh ORA_HASH
mengembalikan hasil yang berbeda untuk data LOB yang sama. Dan versi terbaru dari Referensi Bahasa SQL memperingatkan bahwa ORA_HASH
tidak mendukung LOB.