如何将表值参数从C#传递给Oracle存储过程

我有一个名为CREATE_CASE_EXL的Oracle存储过程:

 PROCEDURE CREATE_CASE_EXL(P_RICdata RICTab, P_sACTION_TYPE IN VARCHAR2); 

其中RICTab是自定义类型:

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

我在PL / SQL中运行此代码来执行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; 

我需要在.NET中执行类似的操作。 您能否告诉我如何将参数作为数据表传递给Oracle存储过程? 我应该使用UDT执行此任务吗?

实际上我发现它是受支持的,但你必须为此目的使用Oracle UDT。

这是我用来解决问题的资源的链接: http : //appsjack.blogspot.co.uk/2010/09/pass-custom-udt-types-to-oracle-stored.html

非常感谢大家的建议!

我认为目前不支持此function。 我想你将不得不使用一些解决方法。

1)XML

2)智能关联数组

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

一年前我们在他们之间做出选择,我们选择了XML。 (并且还试图让你的案子工作但没有成功)