ODP.Net公開了將關聯陣列作爲參數傳遞到C#中的Oracle存儲過程的功能。它是一個很好的功能,除非您嘗試在SQL查詢中使用該關聯數組中包含的數據。如何在SQL查詢中使用Oracle關聯陣列
原因是它需要一個上下文切換 - SQL語句需要SQL類型和一個傳遞到PL/SQL中的關聯數組,這樣實際上定義爲PL/SQL類型。我相信任何在PL/SQL包/過程/函數中定義的類型都是PL/SQL類型,而在這些對象之外創建的類型是SQL類型(如果您可以提供更清晰的內容,請做它,而不是它的目標題)。
所以,問題是,什麼是在過程中可以在SQL語句中使用這樣你會使用到的PL/SQL關聯數組PARAM轉換成某種方法:
OPEN refCursor FOR
SELECT T.*
FROM SOME_TABLE T,
(SELECT COLUMN_VALUE V
FROM TABLE(associativeArray)
) T2
WHERE T.NAME = T2.V;
對於在本例中,「associativeArray」是由PLS_INTEGER索引的簡單表varchar2(200)。在C#中,associativeArry參數填充字符串[]。
除了使用關聯數組之外,還有其他方法可以討論這種做法,但事先知道這些解決方案是不會被接受的。不過,我有興趣看到其他選項。
在這裏看到了類似的問題+類似的解決方案:http://stackoverflow.com/questions/1625649/oracle-參數與在聲明/ 1655743#1655743 – tuinstoel 2009-11-13 18:51:42