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

Oracle nhận giá trị tổng kiểm tra cho một đoạn dữ liệu được xác định bởi một mệnh đề chọn

Bạn có thể sử dụng DBMS_SQLHASH.GETHASH cho điều này. Kết quả truy vấn phải được sắp xếp theo thứ tự và không được chứa bất kỳ LOB nào, nếu không kết quả sẽ không mang tính xác định.

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

Trong đó kiểu tiêu hóa 1 =HASH_MD4, 2 =HASH_MD5, 3 =HASH_SH1.

Gói đó không được cấp cho bất kỳ ai theo mặc định. Để sử dụng nó, bạn sẽ cần ai đó đăng nhập bằng SYS và chạy nó:

SQL> grant execute on dbms_sqlhash to <your_user>;

Kết quả truy vấn phải được sắp xếp theo thứ tự, như được mô tả trong "Lỗi 17082212:DBMS_SQLHASH KẾT QUẢ KHÁC BIỆT TỪ CÁC ĐƯỜNG TRUY CẬP KHÁC NHAU".

Tôi không chắc tại sao LOB không hoạt động, nhưng nó có thể liên quan đến cách hàm ORA_HASH không hoạt động tốt với LOB. Bài viết này của Jonathan Lewis bao gồm một số ví dụ về ORA_HASH trả về các kết quả khác nhau cho cùng một dữ liệu LOB. Và các phiên bản gần đây của Tham chiếu ngôn ngữ SQL cảnh báo rằng ORA_HASH không hỗ trợ 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. Chèn blob trong cơ sở dữ liệu oracle với C #

  2. Kết quả định dạng trừ thời gian

  3. Liên kết tham số SQL OracleCommand

  4. Cách cài đặt SQLcl trên máy Mac

  5. Oracle:DDL và khôi phục giao dịch