ecco la procedura memorizzata che ho scritto.In questo processo "p_subjectid" è una matrice di numeri passati dal front-end.Errore Oracle ORA-22905: impossibile accedere alle righe da un elemento di tabella non annidato
PROCEDURE getsubjects(p_subjectid subjectid_tab,p_subjects out refCursor)
as
BEGIN
open p_subjects for select * from empsubject where subject_id in
(select column_value from table(p_subjectid));
--select * from table(cast(p_subjectid as packg.subjectid_tab))
END getsubjects;
Questo è l'errore che sto ottenendo.
Oracle error ORA-22905: cannot access rows from a non-nested table item OR
come ho visto in diversi post, ho provato gettando "cast (p_subjectid come packg.subjectid_tab)" dentro la funzione tabella come riportato nel commento below.But sto ottenendo un altro errore: ORA-00902: invalid datatype
.
E questa è la definizione di "subjectid_tab".
type subjectid_tab is table of number index by binary_integer;
Qualcuno può dirmi qual è il nulla error.Is sbagliato con la mia procedura.
Questo non funziona in Oracle 11g, nel caso in cui qualcun altro stia lottando. PLS-00355: Uso della tabella pl/sql non definita in questo contesto. Tutto sembra a posto in Oracle 12c. Come un aggiramento in 11g, se si può legare solo ad array associativi (come nodejs), ho fatto il loop del mio array associativo in una tabella annidata (senza suffisso INDICE BY) prima; che uccide la performance, ma cosa puoi fare? Se qualcuno conosce un modo migliore, non esitare a contattarci. –