从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

非常感谢大家的建议!


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

1)XML

2)智能关联数组

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

我们一年前选择了它们,并选择了XML。 (也试图让你的案件工作,但没有成功)

链接地址: http://www.djcxy.com/p/20289.html

上一篇: valued parameter from C# to Oracle stored procedure

下一篇: Type Checking: typeof, GetType, or is?