Một con trỏ có thể rõ ràng hoặc ẩn và một trong hai loại có thể được sử dụng trong vòng lặp FOR. Có hai khía cạnh thực sự cho câu hỏi của bạn.
Tại sao sử dụng một vòng lặp FOR con trỏ rõ ràng trên một vòng lặp FOR con trỏ ẩn?
- Sử dụng một vòng lặp FOR con trỏ rõ ràng khi truy vấn sẽ được sử dụng lại, nếu không thì một con trỏ ẩn được ưu tiên.
Tại sao sử dụng vòng lặp với FETCH chứ không phải vòng lặp FOR không có FETCH rõ ràng?
- Sử dụng FETCH bên trong một vòng lặp khi bạn cần thu thập hàng loạt hoặc khi bạn cần SQL động.
Dưới đây là một số thông tin hữu ích từ các tài liệu.
Ví dụ về con trỏ tiềm ẩn cho LOOP
BEGIN
FOR vItems IN (
SELECT last_name
FROM employees
WHERE manager_id > 120
ORDER BY last_name
)
LOOP
DBMS_OUTPUT.PUT_LINE ('Name = ' || vItems.last_name);
END LOOP;
END;
/
Ví dụ về con trỏ rõ ràng cho LOOP
DECLARE
CURSOR c1 IS
SELECT last_name
FROM employees
WHERE manager_id > 120
ORDER BY last_name;
BEGIN
FOR vItems IN c1 LOOP
DBMS_OUTPUT.PUT_LINE ('Name = ' || vItems.last_name);
END LOOP;
END;
/
Con trỏ tiềm ẩn
Con trỏ ẩn là con trỏ phiên được xây dựng và quản lý bởi PL / SQL. PL / SQL mở một con trỏ ẩn mỗi khi bạn chạy câu lệnh CHỌN hoặc DML. Bạn không thể điều khiển một con trỏ ẩn, nhưng bạn có thể lấy thông tin từ các thuộc tính của nó.
Một con trỏ ẩn đóng lại sau khi câu lệnh liên quan của nó chạy; tuy nhiên, các giá trị thuộc tính của nó vẫn có sẵn cho đến khi một câu lệnh CHỌN hoặc DML khác chạy.
Các thuộc tính con trỏ ẩn là: SQL% ISOPEN, SQL% FOUND, SQL% NOTFOUND, SQL% ROWCOUNT, SQL% BULK_lawCOUNT, SQL% BULK_EXCEPTIONS
Con trỏ rõ ràng
Một con trỏ rõ ràng là một con trỏ phiên mà bạn xây dựng và quản lý. Bạn phải khai báo và xác định một con trỏ rõ ràng, đặt tên cho nó và liên kết nó với một truy vấn (thông thường, truy vấn trả về nhiều hàng). Sau đó, bạn có thể xử lý tập kết quả truy vấn theo một trong các cách sau:
Mở con trỏ tường minh (bằng câu lệnh OPEN), tìm nạp các hàng từ tập kết quả (với câu lệnh FETCH) và đóng con trỏ tường minh (bằng câu lệnh CLOSE).
Sử dụng con trỏ rõ ràng trong một con trỏ Câu lệnh FOR LOOP (xem "Bộ kết quả truy vấn Xử lý bằng con trỏ cho câu lệnh LOOP").
Bạn không thể gán giá trị cho một con trỏ rõ ràng, sử dụng nó trong một biểu thức hoặc sử dụng nó làm tham số chương trình con chính thức hoặc biến chủ. Bạn có thể thực hiện những việc đó bằng một biến con trỏ (xem "Biến con trỏ").
Không giống như một con trỏ ẩn, bạn có thể tham chiếu một con trỏ rõ ràng hoặc biến con trỏ theo tên của nó. Do đó, một con trỏ hoặc biến con trỏ rõ ràng được gọi là một con trỏ được đặt tên.
Con trỏ cho báo cáo LOOP
Câu lệnh FOR LOOP cho phép bạn chạy một câu lệnh CHỌN và sau đó lập tức lặp qua các hàng của tập kết quả. Tuyên bố này có thể sử dụng một con trỏ ngầm hoặc rõ ràng.
FOR
này chỉ là một cách khác để sử dụng con trỏ. Xem các tài liệu: docs.oracle.com/cd/E11882_01/appdev.112/e10472/ Dù sao, htp.prn () làm gì?