title: invalid name pattern when trying to pass custom oracle type object mapping
body: <p>I am trying to use Java spring custom Oracle type as a parameter and getting the following error:</p>
  <pre class="lang-none prettyprint-override"><code>org.springframework.jdbc.UncategorizedSQLException: 
  ### Error updating database.  Cause: java.sql.SQLException: invalid name pattern: UPSELL.mkt_list_tab
  ### The error may involve com.comcast.upsell.dao.ProviderAndRegionalDao.getCorpsToMarketsList-Inline
  ### The error occurred while setting parameters
  ### SQL: call upsell_tx_etl_report.GET_OFFER_CORPS_TO_MARKETS(   ?,   ?,   ?   )
  ### Cause: java.sql.SQLException: invalid name pattern: MY_SCHEMA.mkt_list_tab
  ; uncategorized SQLException for SQL []; SQL state [99999]; error code [17074]; invalid name pattern: MY_SCHEMA.mkt_list_tab; nested exception is java.sql.SQLException: invalid name pattern: MY_SCHEMA.mkt_list_tab
      at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:83)
      at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:80)
      at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:80)
      at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:71)
      at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:364)
      at com.sun.proxy.$Proxy15.update(Unknown Source)
  </code></pre>
  <p>I don't understand: what does it mean by invalid name pattern?</p>
  <p>This is my Oracle type declaration:</p>
  <pre><code>create or replace 
  type mkt_list_tab is table of mkt_list_rec
  
  create or replace 
  type mkt_list_rec as object
      (
      market  VARCHAR2(100)
      )
  </code></pre>
  <p>Procedure call as following:</p>
  <pre class="lang-sql prettyprint-override"><code>PROCEDURE GET_OFFER_CORPS_TO_MARKETS(p_division              IN VARCHAR2, --ALL/Particular
                                       p_market_list           IN mkt_list_tab,
                                       o_offer_corp_market_cur OUT SYS_REFCURSOR)
  </code></pre>
  <p>Here is my Java type handler:</p>
  <pre class="lang-java prettyprint-override"><code>    public class MarketListTypeHandler implements TypeHandler {
      
          
      
          @SuppressWarnings(&quot;unchecked&quot;)
          @Override
          public void setParameter(PreparedStatement ps, int i, Object parameter, JdbcType jdbcType) throws SQLException {
              
              
              C3P0NativeJdbcExtractor cp30NativeJdbcExtractor = new C3P0NativeJdbcExtractor(); 
              OracleConnection connection = (OracleConnection) cp30NativeJdbcExtractor.getNativeConnection(ps.getConnection()); 
              
              
              List&lt;StoredProcedurePojo&gt; objects = (List&lt;StoredProcedurePojo&gt;) parameter;
      
              StructDescriptor structDescriptor = StructDescriptor.createDescriptor(&quot;mkt_list_rec&quot;, connection);
      
              STRUCT[] structs = new STRUCT[objects.size()];
              for (int index = 0; index &lt; objects.size(); index++)
              {
                  StoredProcedurePojo pack = objects.get(index);
                  Object[] params = new Object[2];
                  params[0] = pack.getMarket();
                  STRUCT struct = new STRUCT(structDescriptor, ps.getConnection(), params);
                  structs[index] = struct;
              }
      
              ArrayDescriptor desc = ArrayDescriptor.createDescriptor(&quot;mkt_list_tab&quot;, ps.getConnection());
              ARRAY oracleArray = new ARRAY(desc, ps.getConnection(), structs);
              ps.setArray(i, oracleArray);
          }
  
  
  @Override
          public Object getResult(ResultSet arg0, String arg1) throws SQLException {
              // TODO Auto-generated method stub
              return null;
          }
      
          @Override
          public Object getResult(ResultSet arg0, int arg1) throws SQLException {
              // TODO Auto-generated method stub
              return null;
          }
      
          @Override
          public Object getResult(CallableStatement arg0, int arg1) throws SQLException {
              // TODO Auto-generated method stub
              return null;
          }
      
          
          
          public MarketListTypeHandler() {
              super();
              // TODO Auto-generated constructor stub
          }
  }
  </code></pre>
  <p>Here is my stored procedure pojo class:</p>
  <pre class="lang-java prettyprint-override"><code>public class StoredProcedurePojo {
  
  
      private String market;
  
      public String getMarket() {
          return market;
      }
  
      public void setMarket(String market) {
          this.market = market;
      }
      
      
  }
  </code></pre>
  <p>I have tried to follow this solution:</p>
  <p><a href="https://stackoverflow.com/questions/12719689/how-to-pass-java-list-of-objects-to-oracle-stored-procedure-using-mybatis">How to Pass Java List of Objects to Oracle Stored Procedure Using MyBatis?</a></p>