我被困在下面并出现语法错误 - 请帮助。基本上我使用一个集合来存储几个部门 ID,然后想在 FORALL 语句中将数据插入到 emp 表中时使用这些部门 ID 作为过滤条件。
以下是示例代码:在编译此代码时出现错误,我的要求是使用 INSERT INTO table select * from table 并且无法避免,因此请提出建议。
create or replace Procedure abc(dblink VARCHAR2)
CURSOR dept_id is select dept_ids from dept;
TYPE nt_dept_detail IS TABLE OF VARCHAR2(25);
l_dept_array nt_dept_detail;
Begin
OPEN dept_id;
FETCH dept_id BULK COLLECT INTO l_dept_array;
IF l_dept_array.COUNT() > 0 THEN
FORALL i IN 1..l_dept_array.COUNT SAVE EXCEPTIONS
EXECUTE IMMEDIATE 'INSERT INTO stg_emp SELECT
Dept,''DEPT_10'' FROM dept_emp'||dblink||' WHERE
dept_id = '||l_dept_array(i)||'';
COMMIT;
END IF;
CLOSE dept_id;
end abc;