Мне нужно создать анонимный блок PL/SQL, который должен скопировать данные с t_src
в t_dest
и значения, которые дублируются для хранения в таблице t_err
.PL/SQL: Неправильный синтаксис
t_src
имеет два столбца, заполненных данными и не имеющих первичного ключа.
t_dest
пусто и столбец 1 является первичным ключом. Когда есть исключение для дубликата, я должен передать его и сохранить дубликаты записей в t_err
. Я должен использовать курсоры, forall и BULK COLLECT
. К настоящему времени я создал следующий блок:
DECLARE
CURSOR c_copy IS
select column1, column2
from t_src;
TYPE curtype IS TABLE of c_copy%ROWTYPE;
cursor1 curtype;
BEGIN
OPEN c_copy;
LOOP
FETCH c_copy BULK COLLECT INTO cursor1;
FORALL c_count IN 1..cursor1.COUNT SAVE EXCEPTIONS
INSERT INTO t_dest
VALUES curtype(c_count)
EXCEPTION
WHEN DUP_VAL_ON_INDEX THEN
INSERT INTO t_err VALUES curtype(c_count);
EXIT WHEN c_copy%NOTFOUND
END LOOP;
CLOSE c_copy;
END
И проблема в том, что проблема? –
Я не могу закончить скрипт, это дает мне ошибку в строке FORALL – user3493945