У меня есть курсор с левым соединением, например, так:
CURSOR c_emp
SELECT * FROM FROM EMP_NEW
LEFT JOIN
(SELECT EMP_ID,
DEPT_ID,
SUB_DEPT_ID,
EMP_UID,
FROM EMP)
USING (DEPT_ID, SUB_DEPT_ID, EMP_UID);
Который затем указывается в a для l oop:
For i in c_emp
IF i.emp_id IS NULL
then
insert into emp...
else
update emp...
where emp_id = i.emp_id;
end if;
У нас есть сценарий при загрузке новые данные в таблицу EMP
из таблицы EMP_NEW
, emp_new.dept_id
и emp_new.emp_uid
могут иметь дубликат в таблице EMP
с другим значением sub_dept_id
. Когда мы получаем такие новые данные, emp.emp_id
не выбирается в курсоре, таким образом, logi c переходит в INSERT
вместо UPDATE
. Я хотел бы, чтобы дубликат emp_id
был выбран таким образом, чтобы он перешел к UPDATE
.
EMP-данным:
EMP_ID DEPT_ID SUB_DEPT_ID EMP_UID
123 1 10 123.123
EMP_NEW данным:
DEPT_ID SUB_DEPT_ID EMP_UID
1 20 123.123
Указанный выше курсор в настоящее время возвращает следующее:
EMP_ID DEPT_ID SUB_DEPT_ID EMP_UID
null 1 20 123.123
Что я хотел бы вернуть:
EMP_ID DEPT_ID SUB_DEPT_ID EMP_UID
123 1 20 123.123