title: How to pass a table-valued parameter from C# to Oracle stored procedure
body: <p>I have an Oracle stored procedure named <code>CREATE_CASE_EXL</code>:</p>
  
  <pre><code>PROCEDURE  CREATE_CASE_EXL(P_RICdata RICTab,
                         P_sACTION_TYPE IN VARCHAR2);
  </code></pre>
  
  <p>where <code>RICTab</code> is a custom type:</p>
  
  <pre><code>TYPE RICTab IS TABLE OF MMSRRicRec  INDEX BY BINARY_INTEGER;
  
  TYPE MMSRRicRec IS RECORD
   ( RIC        VARCHAR2(32),
     FID_NO     NUMBER(8),
     REC_ID     NUMBER(8),
     MMS_ACTION VARCHAR2(1)
   );
  </code></pre>
  
  <p>I run this code in PL/SQL to execute <code>CREATE_CASE_EXL</code>:</p>
  
  <pre><code>DECLARE
  pTE_RICS     RICTab 
  
  BEGIN
      pTE_RICS(1).RIC  := 'RIC1';
      pTE_RICS(1).FID_NO := NULL;
      pTE_RICS(1).REC_ID := 3;
      pTE_RICS(1).MMS_ACTION := 'A';
  
      pTE_RICS(1).RIC  := 'RIC2';
      pTE_RICS(1).FID_NO := NULL;
      pTE_RICS(1).REC_ID := 4;
      pTE_RICS(1).MMS_ACTION := 'A';
  
      CREATE_CASE_EXL( pTE_RICS , 'A');
  
  END;
  </code></pre>
  
  <p>I need to execute something similar in .NET.  Can you please advise how could I pass a parameter as a table of data to an Oracle stored procedure? Should I use a UDT for this task?</p>