Nâng caoOracle Cursor ~11 phút

Implicit cursor và SQL cursor attributes

Oracle tự tạo implicit cursor tên SQL cho mỗi câu DML và SELECT INTO; các attributes của nó cho biết câu lệnh gần nhất đã làm gì.

Lý thuyết

Implicit cursor

Khi chạy INSERT, UPDATE, DELETE, MERGE hoặc SELECT INTO, Oracle tự mở và đóng cursor nội bộ. Lập trình viên không viết OPEN, FETCH, CLOSE.

Cursor này được truy cập qua tên SQL.

Bốn attributes quan trọng

  • SQL%ROWCOUNT: số dòng DML gần nhất tác động.
  • SQL%FOUND: TRUE nếu DML tác động ít nhất một dòng.
  • SQL%NOTFOUND: TRUE nếu không có dòng nào bị tác động.
  • SQL%ISOPEN: luôn FALSE vì Oracle tự đóng implicit cursor sau statement.

Phải đọc attributes ngay sau statement cần đo. Một statement SQL khác chạy sau đó sẽ thay trạng thái cursor SQL.

Với SELECT INTO

SELECT INTO thành công thì ROWCOUNT = 1. Nếu 0 dòng hoặc nhiều dòng, exception xảy ra trước khi code phía sau đọc attributes.

SQL%ROWCOUNT tốt để trả affected rows cho API và phát hiện optimistic update không tìm thấy record.

Thuật ngữ (di chuột để xem giải thích)

Dữ liệu mẫu

Đang tải dữ liệu mẫu…