Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Oracle uzyskuje wartość sumy kontrolnej dla porcji danych zdefiniowanej przez klauzulę select

Możesz użyć DBMS_SQLHASH.GETHASH dla tego. Wyniki zapytania muszą być uporządkowane i nie mogą zawierać żadnych obiektów LOB, w przeciwnym razie wyniki nie będą deterministyczne.

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

Gdzie typ_podsumowania 1 =HASH_MD4, 2 =HASH_MD5, 3 =HASH_SH1.

Ten pakiet nie jest domyślnie przyznawany nikomu. Aby go użyć, potrzebujesz kogoś, kto zaloguje się jako SYS i uruchomi to:

SQL> grant execute on dbms_sqlhash to <your_user>;

Wyniki zapytania muszą być uporządkowane, jak opisano w „Błąd 17082212:DBMS_SQLHASH RÓŻNE WYNIKI Z RÓŻNEJ ŚCIEŻKI DOSTĘPU”.

Nie jestem pewien, dlaczego LOB nie działają, ale może to być związane ze sposobem, w jaki funkcja ORA_HASH nie działa dobrze z obiektami LOB. Ten artykuł Jonathana Lewisa zawiera kilka przykładów ORA_HASH zwracanie różnych wyników dla tych samych danych LOB. A ostatnie wersje SQL Language Reference ostrzegają, że ORA_HASH nie obsługuje obiektów 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. Jak używać parametrów w klauzuli „where value in...”?

  2. wybierz rownum z pensji, gdzie rownum=3;

  3. Najpopularniejsze zapytania dotyczące znalezienia poprawki zastosowanej w aplikacjach Oracle

  4. Czy istnieje sposób na użycie Linq to Oracle?

  5. Funkcje Oracle Analytic — resetowanie klauzuli okienkowej