title: PLSQL ignore compilation error which is not an error
body: <p>I came accross interesting error where I am not sure about best way how to fix it. Given following block:</p>
  
  <pre><code>    DECLARE
        v_column_exists number := 0;  
        host_column_exists number := 0;
        i number;
      BEGIN
        Select count(*) into v_column_exists from user_tab_cols where column_name = 'CONNECTIONDESCRIPTION' and table_name = 'NODES';
  
        if (v_column_exists = 1) then
          Select count(*) into host_column_exists from user_tab_cols where column_name = 'HOST' and table_name = 'NODES';
  
          if (host_column_exists = 0) then
            execute immediate 'alter table NODES add (Host varchar2(255))';
            for item in (select connectiondescription, code from nodes) loop
              ... LOOP STUFF ...
            end loop;
          end if;
        end if;
      END;
  </code></pre>
  
  <p>I get following result:</p>
  
  <blockquote>
    <p>PL/SQL: ORA-00904: "CONNECTIONDESCRIPTION": invalid identifier<br>
    ORA-06550: line 40, column 20: PL/SQL: SQL Statement ignored<br>
    ORA-06550: line 41, column 20: PLS-00364: loop index variable 'ITEM'
    use is invalid</p>
  </blockquote>
  
  <p>any ideas how to get rid of this error? Problem is occuring when column <code>NODES.CONNECTIONDESCRIPTION</code> is not present in database, however in such case for loop won't execute in runtime. I would need to disable these errors, but haven't found any way to do it. I have tried using <code>ALTER SESSION SET PLSQL_WARNINGS='DISABLE:00904'</code>, but it had no effect.</p>
  
  <p>Thanks</p>