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

Jak używać ora_hash w kolumnie typu danych xmltype

Jak już wiesz, ora_hash nie akceptuje long lub wartości LOB. Możesz przekazać pierwsze 4k lub 32k zawartości XML, ale jeśli chcesz się upewnić, że cały dokument XML nie uległ zmianie, to nie wystarczy. I jak wspomniał Ben, ora_hash ma maksymalnie 4294967295 kubełków, więc kolizje są bardziej prawdopodobne niż w przypadku SHA-1 lub MD5. Jak mówi dokumentacja, ora_hash „przydaje się do operacji takich jak analiza podzbioru danych i generowanie losowej próbki”.

Możesz użyć dbms_crypto pakiet do mieszania całej wartości XMLType, jako CLOB wyodrębniony za pomocą getClobVal funkcja, z funkcją opakowującą, aby była prostsza w użyciu:

create or replace function my_hash(xml xmltype) return raw is
begin
  return dbms_crypto.hash(src=>xml.getclobval(), typ=>dbms_crypto.hash_sh1);
end;
/

Następnie możesz przekazać swój XMLType jako wartość lub jako kolumnę jako część wyboru:

select my_hash(xml) from t42;

MY_HASH(XML)                                 
---------------------------------------------
494C4E7688963BCF312B709B33CD1B5CCA7C0289     



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. oracle systimestamp (sysdate) do milisekund

  2. NLS_CHARSET_DECL_LEN() Funkcja w Oracle

  3. Oracle INSERT do dwóch tabel w jednym zapytaniu

  4. Jak zwiększyć bufor dbms_output?

  5. Oracle SQL — REGEXP_LIKE zawiera znaki inne niż a-z lub A-Z