6

I have an Oracle stored procedure named CREATE_CASE_EXL:

PROCEDURE  CREATE_CASE_EXL(P_RICdata RICTab,
                       P_sACTION_TYPE IN VARCHAR2);

where RICTab is a custom type:

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)
 );

I run this code in PL/SQL to execute CREATE_CASE_EXL:

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;

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?

mskfisher
  • 3,291
  • 4
  • 35
  • 48
Evgeniy O
  • 143
  • 1
  • 2
  • 8
  • Have a look here. http://my-tech-talk.blogspot.co.uk/2010/01/how-to-pass-arrays-from-net-c-to-oracle.html – tranceporter Oct 03 '12 at 16:29
  • tranceporter, thank you for the link, but in the example they use single dimension array and in my case I need 2 dimension array which has 2 columns - RIC, FID_NO, REC_ID, MMS_ACTION. Cheers! – Evgeniy O Oct 03 '12 at 16:54

2 Answers2

4

actually I found that it's supported, but you have to use Oracle UDT for that purpose.

Here's link to the resources which I used to solve the issue: http://appsjack.blogspot.co.uk/2010/09/pass-custom-udt-types-to-oracle-stored.html

Big thanks to everybody for the advices!

Evgeniy O
  • 143
  • 1
  • 2
  • 8
0

I don't think this is currently supported. I think you will have to use some workaround.

1) XML

2) smart associative array

pTE_RICS(1).RIC  := 'RIC1'; -> pTE_RICS("item[0].RIC")  := 'RIC1';

We were choosing between them a year ago and we chose XML. (and also trying to get your case working but without success)

jakub.petr
  • 2,951
  • 2
  • 23
  • 34
  • Hi, actually I found that it's supported, but you have to use Oracle UDT for that reason. Here's couple of links describing how to do this: – Evgeniy O Oct 05 '12 at 14:35