Одна из возможностей заключается в том, что в вашем скрипте нет слеша /
после оператора end;
, который указывает SQLPlus выполнить блок. Если у вас просто end;
, за которым ничего не стоит, возможно, SQLPlus ожидает большего ввода, который он никогда не получит.
Кроме того, я бы посоветовал вашему dba посмотреть на V$SESSION_WAIT
во время работы блока, чтобы увидеть, что ожидает ваш сеанс.
Более того, вы можете попробовать переписать, как показано ниже, что, я думаю, будет более эффективным:
DECLARE
CURSOR my_cur IS
SELECT ROW_NUMBER() OVER (PARTITION BY personrefid ORDER BY hiredt, loaddt) seq
FROM archive_person
FOR UPDATE;
BEGIN
FOR my_rec IN my_cur LOOP
UPDATE archive_person SET version = my_rec.seq
WHERE CURRENT OF my_cur;
END LOOP;
END;
/