2011-12-22 44 views
1

我想使用ODP.NET(4.112.2.0)從我的c#.net 4代碼調用oracle10g的存儲過程「MyStoredProcedure」。結合數組綁定和關聯數組

​​

我知道如何使用數組綁定功能,這樣我可以在一個單一的數據庫往返插入多行插入表中。
我也知道如何調用具有關聯數組作爲參數的存儲過程。我不知道的是如何將兩者結合?我看了http://docs.oracle.com/html/E10927_01/featOraCommand.htm#i1007888舉例和示例代碼(但它的單獨示例)。 謝謝

回答

0

我終於不得不將數組轉換爲逗號分隔的字符串,並將其作爲參數傳遞。所以在我的proc中,我將csv轉換回數組。

0

雖然轉換爲CSV的工作效率不是很高,你只能使用4000個字符。

達到你想要的東西這將是最好使用使用FORALL循環

例如

PACKAGE MyPackage AS 
TYPE ids_array IS TABLE OF NUMBER(8) INDEX BY BINARY_INTEGER; 
PROCEDURE MyStoredProcedure 
(
    param1 IN VARCHAR2(10), 
    param2 IN ids_array 
); 
/
PACKAGE MyPackage BODY 

ENDPROCEDURE MyStoredProcedure 
(
    param1 IN VARCHAR2(10), 
    param2 IN ids_array 
) AS 
BEGIN 

    forall i in param2.FIRST .. param2.LAST 
     INSERT INTO TABLE(col1,col2) VALUES (param1, params2(i)); 

END; 

END MyPackage; 

從ODP.NET中你有兩個參數,第一個是varchar,第二個是關聯數組。