Из вашего запроса курсора мы видим, что table1.column1
и table2.column3
являются идентификаторами.Это также столбцы, которыми вы манипулируете в инструкциях UPDATE.Таким образом, в процедурной логике есть пробел, который означает, что предложение SET генерирует повторяющиеся значения в уникальном столбце.Кажется, что ваши данные имеют состояние, отличное от того, что вы думаете.
Чтобы исправить это, вам нужно провести некоторое исследование данных.
- Является ли
DB_KSS_ONLINE
настоящим именемtable1
или table2
в вашем отредактированном коде?Это говорит вам, какие данные вам нужно исследовать. - Запустите инструкцию SELECT, которая воспроизводит обновленные значения.Это говорит вам о том, какое дополнительное правило (фильтр) вам нужно установить.
Примерно так:
SELECT e.column1
, case when e.column1 like '2027044%' then
REPLACE(REPLACE(column1, 'OPRS', 'V'), 'ABV', 'T')
else null
end as updated_col1
, d.column3
, REPLACE(REPLACE(column3, 'OPRS', 'V'), 'ABV', 'T') as updated_col3
, e.column2
, d.column4
FROM table1 e, table2 d
WHERE e.column1 = d.column3
order by 4 nulls last, 2 nulls last ;