DBMS_SQLHASH.GETHASH
を使用できます このため。クエリ結果は順序付けする必要があり、LOBを含めることはできません。そうしないと、結果が決定論的ではなくなります。
select dbms_sqlhash.gethash(q'[select * from some_table order by 1,2]', digest_type => 1)
from dual;
ここで、digest_type 1 =HASH_MD4、2 =HASH_MD5、3=HASH_SH1。
そのパッケージは、デフォルトでは誰にも付与されません。これを使用するには、SYSとしてログオンしてこれを実行する人が必要です:
SQL> grant execute on dbms_sqlhash to <your_user>;
「バグ17082212:異なるアクセスパスからのDBMS_SQLHASH異なる結果」で説明されているように、クエリ結果を並べ替える必要があります。
LOBが機能しない理由はわかりませんが、関数ORA_HASH
の方法に関連している可能性があります。 LOBではうまく機能しません。このジョナサンルイスの記事には、ORA_HASH
の例がいくつか含まれています。 同じLOBデータに対して異なる結果を返します。また、SQL言語リファレンスの最近のバージョンでは、ORA_HASH
LOBをサポートしていません。