sql >> Databasteknik >  >> RDS >> Oracle

Oracle får kontrollsummavärde för en databit som definieras av en select-sats

Du kan använda DBMS_SQLHASH.GETHASH för detta. Frågeresultaten måste ordnas och får inte innehålla några LOB, annars blir resultaten inte deterministiska.

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

Där digest_type 1 =HASH_MD4, 2 =HASH_MD5, 3 =HASH_SH1.

Det paketet beviljas inte till någon som standard. För att använda det behöver du någon som loggar in som SYS och kör detta:

SQL> grant execute on dbms_sqlhash to <your_user>;

Frågeresultaten måste beställas enligt beskrivningen i "Bug 17082212 :DBMS_SQLHASH OLIKA RESULTAT FRÅN OLIKA ÅTKOMSTSväg".

Jag är inte säker på varför LOB:er inte fungerar, men det kan vara relaterat till hur funktionen ORA_HASH fungerar fungerar inte bra med LOB. Den här Jonathan Lewis-artikeln innehåller några exempel på ORA_HASH returnerar olika resultat för samma LOB-data. Och de senaste versionerna av SQL Language Reference varnar för att ORA_HASH stöder inte LOB.




  1. Hur man tolkar JSON i postgresql

  2. Hur tar man bort accenter och alla tecken <> a..z i sql-server?

  3. Databas hög tillgänglighet för Camunda BPM med MySQL eller MariaDB Galera Cluster

  4. TSQL - Hur använder man GO inuti ett BEGIN .. END-block?