sql >> Databáze >  >> RDS >> Oracle

Oracle získá hodnotu kontrolního součtu pro datový blok definovaný klauzulí select

Můžete použít DBMS_SQLHASH.GETHASH pro tohle. Výsledky dotazu musí být seřazené a nesmí obsahovat žádné LOB, jinak výsledky nebudou deterministické.

select dbms_sqlhash.gethash(q'[select * from some_table order by 1,2]', digest_type => 1)
from dual;

Kde digest_type 1 =HASH_MD4, 2 =HASH_MD5, 3 =HASH_SH1.

Tento balíček není ve výchozím nastavení nikomu udělen. Chcete-li jej použít, budete potřebovat někoho, kdo se přihlásí jako SYS a spustí toto:

SQL> grant execute on dbms_sqlhash to <your_user>;

Výsledky dotazu musí být seřazeny, jak je popsáno v "Chyba 17082212:DBMS_SQLHASH ODLIŠNÉ VÝSLEDKY Z JINÉ PŘÍSTUPOVÉ CESTY".

Nejsem si jistý, proč LOB nefungují, ale může to souviset se způsobem funkce ORA_HASH nefunguje dobře s LOBy. Tento článek Jonathana Lewise obsahuje některé příklady ORA_HASH vrací různé výsledky pro stejná data LOB. A nedávné verze SQL Language Reference varují, že ORA_HASH nepodporuje LOB.




  1. Jak používat Access jako CRM

  2. Oracle Joins - Srovnání mezi konvenční syntaxí VS ANSI syntaxí

  3. samostatné hodnoty oddělené čárkami a uložení do tabulky na serveru SQL

  4. MySQL přidává k datu dny