title: PL/SQL Execute immediate exception handling inside for loop
body: <p>In the below PL/SQL code, TABLE_ONE holds table name tname , column name cname and rowid rid. The For loop fetches records from TABLE_ONE and updates column cname in table tname for the record with row id rid. But if the record to be updated in tname is locked then the for loop gets stuck and no further records from TABLE_ONE are processed. Ideally, the script to ignore the records for which update failed and proceed further. Please advise what could be the issue.</p>
  
  <pre><code>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 || '=&gt;' || 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;
  </code></pre>