Курсоры, как правило, не являются хорошим решением, поэтому любое решение, например @Mikael Eriksson, потенциально лучше.Однако, если вам действительно нужно использовать курсор для обновления, вы должны пометить его как нечувствительный:
DECLARE Employee_Cursor INSENSITIVE CURSOR FOR
SELECT empno FROM emp
Я не подтвердил это в 2008 году, но, конечно, в 2005 и ниже, вы можете ожидать все видыстранно, если вы обновляете данные, для которых определен ваш курсор, без пометки курсора как нечувствительного.
Другой вариант может заключаться в использовании временной таблицы.