title: PLSQL - Check if an object exists in a table of objects - type has no map
body: <p>I have a procedure that has got this variables of type table of objects:</p>
  
  <pre><code>lsa_final_filter_ports   t_modifylink_multicolumnlist; 
  lsa_initial_filter_ports   t_modifylink_multicolumnlist;
  </code></pre>
  
  <p>Definition of <code>t_modifylink_multicolumnlist</code> is:</p>
  
  <pre><code>CREATE OR REPLACE TYPE "T_MODIFYLINK_MULTICOLUMNLIST" IS TABLE OF o_modifylink_multicolumnlist;
  TYPE o_modifylink_multicolumnlist AS OBJECT(some properties);
  </code></pre>
  
  <p><code>lsa_final_filter_ports</code> variable is populated like this</p>
  
  <pre><code>SELECT b.name INTO ls_bandwidth_name FROM bandwidth b 
            WHERE b.bandwidthid = lna_compatible_port_bw(i);
            SELECT CAST(MULTISET(SELECT * 
                           FROM TABLE(piosa_all_ports) 
                           WHERE ITEMNAME4 = ls_bandwidth_name) 
                AS t_modifylink_multicolumnlist)
                INTO lsa_final_filter_ports 
                FROM dual;
  </code></pre>
  
  <p>Where <code>piosa_all_ports</code> is I/O parameter having same type <code>t_modifylink_multicolumnlist</code>
  Second parameter is initialized at the beginig of procedure with a second I/O parameter that the procedure has</p>
  
  <pre><code>lsa_initial_filter_ports := piosa_filtered_ports;
  </code></pre>
  
  <p>What I want to achieve is to check if an object from <code>lsa_final_filter_ports</code> exists in <code>lsa_initial_filter_ports</code> and if so then skip adding that object in <code>lsa_initial_filter_ports</code> which will be an output parameter used by the outside calling procedure.</p>
  
  <p>What I've tried is iterating through <code>lsa_final_filter_ports</code> objects and checking if that object already exists like this:</p>
  
  <pre><code>FOR i in 1..lsa_final_filter_ports.COUNT LOOP
      IF lsa_final_filter_ports(i) MEMBER OF lsa_initial_filter_ports THEN
          CONTINUE;
      END IF;
      lsa_initial_filter_ports.EXTEND();
      lsa_initial_filter_ports(lsa_initial_filter_ports.COUNT) := lsa_final_filter_ports(i); 
  END LOOP;
  </code></pre>
  
  <p>But with this code I'm getting the following error:</p>
  
  <blockquote>
    <p>Error: PLS-00801: internal error [*** ASSERT at file pdw4.c, line
    2181; Type 0x0x7f991127aef8 has no MAP method.;
    NR_WIZARDVALIDATIONS__CUSTOMISATIONS__B__166833[33]</p>
  </blockquote>
  
  <p>I'm not sure if this kind of comparation can be made, maybe someone can clarify this.</p>
  
  <p>Thank you</p>