2012-10-03 37 views
4

我有一個Oracle存儲過程命名爲CREATE_CASE_EXL如何從C#中的表值參數傳遞到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; 

I N在.NET中執行類似的東西。您能否請告知我如何將參數作爲數據表傳遞給Oracle存儲過程?我應該使用UDT來完成這項任務嗎?

+0

看看這裏。 http://my-tech-talk.blogspot.co.uk/2010/01/how-to-pass-arrays-from-net-c-to-oracle.html – tranceporter

+0

tranceporter,感謝您的鏈接,但在他們使用單維數組的例子,在我的情況下,我需要2維數組,它有2列--RIC,FID_NO,REC_ID,MMS_ACTION。乾杯! –

回答

0

我不認爲這是目前支持。我認爲你將不得不使用一些解決方法。

1)XML

2)智能關聯數組

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

我們之間一年前的選擇,我們選擇了XML。 (也試圖讓你的案例工作,但沒有成功)

+0

嗨,實際上我發現它被支持,但是你必須使用Oracle UDT。這裏有幾個鏈接描述如何做到這一點: –

相關問題