簡體   English   中英

如何將表值參數從C#傳遞到Oracle存儲過程

[英]How to pass a table-valued parameter from C# to Oracle stored procedure

我有一個名為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。 (並且還試圖使您的案件成功,但沒有成功)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM