Trong bài đăng này, tôi đưa ra một ví dụ để thực hiện chèn vào bằng lệnh Oracle Bulk Collect và FORALL. Đã tạo một hàm PL SQL sẽ lấy dữ liệu từ bảng EMP bằng con trỏ, sau đó tạo biến mảng kiểu của loại hàng con trỏ đó rồi thu thập hàng loạt và chèn vào bảng BONUS bằng FORALL.
Dưới đây là ví dụ:
CREATE OR REPLACE FUNCTION f_currowtype RETURN BOOLEAN IS CURSOR c_emp IS SELECT empno, ename, job, sal FROM emp; TYPE t_emp IS TABLE OF c_emp%ROWTYPE; e_rec t_emp; BEGIN OPEN c_emp; FETCH c_emp BULK COLLECT INTO e_rec; CLOSE c_emp; FORALL i IN e_rec.FIRST .. e_rec.LAST insert into bonus (empno, amount) values (e_rec(i).empno, e_rec(i).sal * 10 / 100); DBMS_OUTPUT.put_line ('Rows inserted: ' || SQL%ROWCOUNT); COMMIT; RETURN TRUE; EXCEPTION WHEN OTHERS THEN ROLLBACK; RETURN FALSE; END;
Bạn có thể thực hiện nó như sau:
SET SERVEROUTPUT ON; BEGIN IF f_currowtype THEN DBMS_OUTPUT.put_line ('Success'); ELSE DBMS_OUTPUT.put_line ('Failed'); END IF; END;