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

Sự khác biệt giữa con trỏ rõ ràng và ẩn trong Oracle là gì?

Con trỏ ngầm là con trỏ được Oracle "tự động" tạo cho bạn khi bạn thực hiện một truy vấn. Nó đơn giản hơn để viết mã, nhưng bị

  • không hiệu quả (tiêu chuẩn ANSI chỉ định rằng nó phải tìm nạp hai lần để kiểm tra xem có nhiều hơn một bản ghi hay không)
  • lỗ hổng đối với lỗi dữ liệu (nếu bạn nhận được hai hàng, điều đó sẽ dẫn đến ngoại lệ TOO_MANY_ROWS)

Ví dụ

SELECT col INTO var FROM table WHERE something;

Con trỏ rõ ràng là con trỏ do bạn tự tạo. Cần nhiều mã hơn, nhưng cung cấp nhiều quyền kiểm soát hơn - ví dụ:bạn chỉ có thể mở-tìm nạp-đóng nếu bạn chỉ muốn bản ghi đầu tiên và không quan tâm nếu có những bản ghi khác.

Ví dụ

DECLARE   
  CURSOR cur IS SELECT col FROM table WHERE something; 
BEGIN
  OPEN cur;
  FETCH cur INTO var;
  CLOSE cur;
END;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. OracleParameter và Mệnh đề IN

  2. WHERE_IN truy vấn với một khóa tổng hợp?

  3. Làm cách nào để xóa các bản sao khỏi danh sách được phân tách bằng dấu cách bởi Oracle regexp_replace?

  4. Hàm REMAINDER () trong Oracle

  5. Cách tối ưu để XÓA các hàng được chỉ định khỏi Oracle