我需要创建一个 PL/SQL 匿名块,该块必须将数据从t_src
to复制,t_dest
并将重复的值存储在 table 中t_err
。
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