Oracle
 sql >> база данни >  >> RDS >> Oracle

Oracle получава стойност на контролната сума за блок от данни, дефиниран от клауза за избор

Можете да използвате 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 Language Reference предупреждават, че ORA_HASH не поддържа LOB.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. alter table modify колона в базата данни на Oracle

  2. Как да премахнете множество интервални дялове въз основа на дата?

  3. Обърнете в Oracle този път z/y/x към x/y/z

  4. Вмъкване на изображение в BLOB Oracle 10g

  5. ефективен начин за тестване дали съществува ред в таблица