Trong bài đăng trên blog trước, tôi đã đưa ra một ví dụ để sử dụng Oracle Bulk Collect using Cursor Rowtype Type Object. Đầu tiên tạo con trỏ, sau đó nhập đối tượng của loại con trỏ và sau đó mở con trỏ, tìm nạp vào bộ sưu tập hàng loạt và cuối cùng xử lý chúng bằng Forall. Nhưng đôi khi bạn có thể được yêu cầu chuẩn bị một số dữ liệu chỉ một lần với khối PLSQL ẩn danh tạm thời và bạn không muốn viết quá nhiều mã để thực hiện tác vụ đó. Đối với loại tình huống này, bạn có thể sử dụng Chọn Thu thập hàng loạt vào một tùy chọn để thực hiện bất kỳ tác vụ nào một cách nhanh chóng mà không tốn quá nhiều thời gian để viết mã.
Dưới đây là ví dụ về khối PLSQL sẽ lấy các bản ghi từ bảng EMP và cập nhật bảng THƯỞNG và cũng in trên màn hình.
SET SEVEROUTPUT ON; DECLARE TYPE t_emp IS TABLE OF emp%ROWTYPE; e_rec t_emp; BEGIN SELECT * BULK COLLECT INTO e_rec FROM emp; FORALL i IN e_rec.FIRST .. e_rec.LAST update bonus set amount = e_rec(i).sal * 15 / 100 where empno = e_rec(i).empno; Commit; FOR i IN e_rec.FIRST .. e_rec.LAST LOOP DBMS_OUTPUT. put_line ( 'Bonus Updated For Employee: ' || e_rec (i).ename || ' ' || 'Bonus: ' || e_rec(i).sal * 15 / 100); END LOOP; END;