Я застрял внизу и получил синтаксическую ошибку. Пожалуйста, помогите. В основном я использую коллекцию для хранения нескольких идентификаторов отдела, а затем хотел бы использовать эти идентификаторы отдела в качестве условия фильтра при вставке данных в таблицу emp в инструкции FORALL.FORALL + EXECUTE IMMEDIATE + INSERT Into tbl SELECT
Ниже приведен пример кода: при компиляции этого кода. Я получаю сообщение об ошибке. Мое требование - использовать таблицу INSERT INTO, выбрать * из таблицы и не избежать этого, пожалуйста, предложите.
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;
Вы собираетесь сказать нам, что ошибка, или мы должны угадать? – OldProgrammer
Насколько сложно скопировать данные сессии, включая стек ошибок. Просто выполните его в SQL * Plus и скопируйте содержимое. –
Если вы получаете сообщение типа «скомпилировано с предупреждениями» или «см. Журнал компилятора», в некоторых клиентах вы можете использовать «show errors» для просмотра актуальных проблем; и вы можете запросить представление 'user_errors' от любого клиента. –