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;