Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Cách sử dụng ora_hash trên một cột kiểu dữ liệu xmltype

Như bạn đã biết, ora_hash không chấp nhận long hoặc các giá trị LOB. Bạn có thể chuyển 4k hoặc 32k đầu tiên của nội dung XML, nhưng nếu bạn cần đảm bảo rằng toàn bộ tài liệu XML không thay đổi, điều đó sẽ không đủ. Và như Ben đã đề cập, ora_hash có tối đa 4294967295 nhóm, do đó, có nhiều khả năng xảy ra va chạm hơn với SHA-1 hoặc MD5. Như tài liệu cho biết, ora_hash 'hữu ích cho các hoạt động như phân tích một tập hợp con dữ liệu và tạo một mẫu ngẫu nhiên'.

Bạn có thể sử dụng dbms_crypto gói để băm toàn bộ giá trị XMLType, dưới dạng CLOB được trích xuất bằng getClobVal , với một hàm wrapper để sử dụng đơn giản hơn:

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

Sau đó, bạn có thể chuyển vào XMLType của mình, dưới dạng một giá trị hoặc một cột như một phần của lựa chọn:

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. Khung thực thể và nhiều lược đồ

  2. Làm thế nào để tạo và sử dụng bảng tạm thời trong thủ tục lưu trữ oracle?

  3. cách xuất dữ liệu từ bảng nhật ký sang nội dung email trong oracle

  4. Cách tạo mảng liên kết trong cơ sở dữ liệu Oracle

  5. Câu lệnh INSERT trong Oracle