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

Jak používat ora_hash ve sloupci datového typu xmltype

Jak již víte, ora_hash nepřijímá long nebo hodnoty LOB. Můžete předat prvních 4 kB nebo 32 kB obsahu XML, ale pokud se potřebujete ujistit, že se nezměnil celý dokument XML, nebude to stačit. A jak Ben zmínil, ora_hash má maximum 4294967295 bucketů, takže kolize jsou pravděpodobnější než u SHA-1 nebo MD5. Jak uvádí dokumentace, ora_hash 'je užitečné pro operace, jako je analýza podmnožiny dat a generování náhodného vzorku'.

Můžete použít dbms_crypto balíček k hašování celé hodnoty XMLType jako CLOB extrahovaný pomocí getClobVal s funkcí wrapper pro snazší použití:

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;
/

Poté můžete předat svůj XMLType jako hodnotu nebo jako sloupec jako součást select:

select my_hash(xml) from t42;

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



  1. Jak zakázat všechny spouštěče v databázi SQL Server

  2. Funkce COMPOSE() v Oracle

  3. SQLSTATE[HY000] [1045] Přístup odepřen uživateli 'username'@'localhost' pomocí CakePHP

  4. Zobrazení ALL_PROCEDURES nezobrazuje PROCEDURE_NAME