Возможно, ваш ответ уже встроен в скрипт:
UPDATE Category2 ---Should this insert the values int the Category tablE??????????
Это означает, что вы ожидаете, что строки, которые не существуют, будут вставлены, но это не так. Ну, ответ на этот вопрос - НЕТ. Как указано, обновление, которое воздействует на 0 строк, не считается ошибкой, но также не является указанием на то, что строка должна быть создана. Если это действительно тот функциональный элемент, который вы ищете, тогда вам нужно использовать оператор Merge вместо update.
Merge into Category2 c2
using (select mvi, textout from dual) m
on (m.mvi = c2.category_id)
when matched then
set c2.category_name = m.testout
when not matched then
insert (category_id, category_name)
values (m.mvi, m.textout);
С этим вы получите свою вставку, если запрошенный category_id не завершится. Тем не менее, я согласен с @JeffreyKemp в отношении предполагаемой логики, она кажется немного основанной на сомнительных предположениях. также для полного ответа вам необходимо предоставить тестовые данные в виде отформатированного текста и ожидаемый результат для этих данных.