sql >> Database teknologi >  >> RDS >> Oracle

Oracle får kontrolsumværdi for en datachunk defineret af en select-klausul

Du kan bruge DBMS_SQLHASH.GETHASH for det. Forespørgselsresultaterne skal ordnes og må ikke indeholde nogen LOB'er, ellers vil resultaterne ikke være deterministiske.

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

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

Denne pakke er ikke givet til nogen som standard. For at bruge det, skal du have nogen til at logge på som SYS og køre dette:

SQL> grant execute on dbms_sqlhash to <your_user>;

Forespørgselsresultaterne skal bestilles, som beskrevet i "Bug 17082212:DBMS_SQLHASH FORSKELLIGE RESULTATER FRA ANDEN ADGANGSTI".

Jeg er ikke sikker på, hvorfor LOB'er ikke virker, men det kan være relateret til den måde, funktionen ORA_HASH på fungerer ikke godt med LOB'er. Denne Jonathan Lewis-artikel indeholder nogle eksempler på ORA_HASH returnerer forskellige resultater for de samme LOB-data. Og nyere versioner af SQL Language Reference advarer om, at ORA_HASH understøtter ikke LOB'er.




  1. LOAD DATA LOCAL INFILE giver fejlen Den brugte kommando er ikke tilladt med denne MySQL-version

  2. Konfigurer Master-Master MySQL-databasereplikering

  3. SQL-fejl:ORA-02291:integritetsbegrænsning

  4. SQL Server SMO klager over manglende DLL