ODP.Net udostępnia zdolność do przekazywania tablic asocjacyjnych jako parametrów do procedury składowanej Oracle z C#. Jest to dobra funkcja, chyba że próbujesz użyć danych zawartych w tej tablicy asocjacyjnej w zapytaniu sql.Jak korzystać z tablicy asocjacyjnej Oracle w zapytaniu SQL?
Powodem tego jest konieczność przełączenia kontekstu - instrukcje SQL wymagają typów SQL i tablic asocjacyjnych przekazanych do PL/SQL, tak jak jest to faktycznie zdefiniowane jako typ PL/SQL. Wierzę, że wszystkie typy zdefiniowane w pakiecie/procedurze/funkcji PL/SQL są typami PL/SQL, a typ tworzony poza tymi obiektami jest typem SQL (jeśli możesz zapewnić większą jasność, proszę, ale nie jest to celem tego pytanie).
Więc pytanie jest, jakie są metody należy użyć do konwersji PL/SQL asocjacyjna param do czegoś, co w ramach procedury mogą być stosowane w instrukcji SQL tak:
OPEN refCursor FOR
SELECT T.*
FROM SOME_TABLE T,
(SELECT COLUMN_VALUE V
FROM TABLE(associativeArray)
) T2
WHERE T.NAME = T2.V;
Dla dla celów tego przykładu "asocjacyjna tablica" jest prostą tabelą varchar2 (200) indeksowaną przez PLS_INTEGER. W języku C# parametr associativeArry jest wypełniany ciągiem znaków [].
Zapraszam do dyskusji na temat innych sposobów na to, oprócz korzystania z tablicy asocjacyjnej, ale wiem z wyprzedzeniem, że te rozwiązania nie zostaną zaakceptowane. Nadal jestem zainteresowany widząc inne opcje.
Zobacz tutaj podobny problem + podobnego rozwiązania: http://stackoverflow.com/questions/1625649/oracle- Parametry-w-wyciągu/1655743 # 1655743 – tuinstoel