В приведенном ниже коде PL/SQL TABLE_ONE содержит имя таблицы tname , имя столбца cname и идентификатор строки rid. Цикл For извлекает записи из TABLE_ONE и обновляет столбец cname в таблице tname для записи с идентификатором строки rid. Но если запись, которая должна быть обновлена в tname, заблокирована, цикл for застревает, и дальнейшие записи из TABLE_ONE не обрабатываются. В идеале скрипт должен игнорировать записи, для которых не удалось выполнить обновление, и продолжать работу дальше. Подскажите пожалуйста в чем может быть дело.
BEGIN
FOR c IN (SELECT * FROM TABLE_ONE a )
LOOP
DECLARE
TNAME varchar2(30);
CNAME varchar2(30);
RID ROWID;
X number;
updt_stmt varchar2(300);
BEGIN
BEGIN
TNAME := c.TNAME;
CNAME := c.CNAME;
RID := c.RID;
DBMS_OUTPUT.PUT_LINE( TNAME || '=>' || CNAME);
updt_stmt := 'UPDATE ' || TNAME || ' SET ' || CNAME || ' = ''123'' WHERE ROWID like ''%' || RID || '%''';
EXECUTE IMMEDIATE updt_stmt;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('ERROR');
END;
END;
END LOOP;
END;