title: Invalid binding for Oracle UDT in procedure parameter
body: <p>I'm attempting to call a procedure that takes a custom data type of <code>table of numbers</code> as one of the parameters.</p>
  
  <p>Here is the definition of the type:</p>
  
  <pre><code>create type num_list as table of number;
  </code></pre>
  
  <p>And the definition of the procedure:</p>
  
  <pre><code>create or replace procedure my_procedure
      (listofnumbers num_list,
                    v_value char)
  is
  begin
  
    update my_table
       set my_column = v_value
     where my_row_id in (select column_value
                           from table(listofnumbers));
  
  end;
  </code></pre>
  
  <p>Using ODP.NET and C#, I'm declaring it as follows:</p>
  
  <pre><code>var row_ids = new int[] { 1, 2 };
  
  using (var oracleConn = new Oracle.DataAccess.Client.OracleConnection(myConnectionString))
  {
      oracleConn.Open();
      var cmd = new Oracle.DataAccess.Client.OracleCommand("my_procedure", oracleConn);
      cmd.CommandType = CommandType.StoredProcedure;
  
      var param1 = new Oracle.DataAccess.Client.OracleParameter("listofnumbers", Oracle.DataAccess.Client.OracleDbType.Array, ParameterDirection.Input);
      param1.CollectionType = Oracle.DataAccess.Client.OracleCollectionType.PLSQLAssociativeArray;
      param1.UdtTypeName = "num_list";
      param1.Value = row_ids;
      cmd.Parameters.Add(param1);
  
      var param2 = new Oracle.DataAccess.Client.OracleParameter("v_value ", Oracle.DataAccess.Client.OracleDbType.Char, ParameterDirection.Input);
      param2.Value = "Y";
      cmd.Parameters.Add(param2);
  
      cmd.ExecuteNonQuery();
  }
  </code></pre>
  
  <p>The exception being thrown states:</p>
  
  <blockquote>
    <p>Invalid parameter binding Parameter
    name: listofnumbers</p>
  </blockquote>
  
  <p>What properties am I missing in defining the parameter? </p>