Hier ist die gespeicherte Prozedur, die ich schrieb.In diesem Prozess "p_subjectid" ist ein Array von Zahlen vom Front-End übergeben.Oracle-Fehler ORA-22905: kann nicht auf Zeilen von einem nicht verschachtelten Tabellenelement zugreifen
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;
Dies ist der Fehler, den ich bekomme.
Oracle error ORA-22905: cannot access rows from a non-nested table item OR
, wie ich in verschiedener Post gesehen habe, habe ich versucht, in dem Kommentar "cast (p_subjectid als packg.subjectid_tab)" innerhalb Tabellenfunktion als gegeben Casting below.But ich bin immer ein anderen Fehler: ORA-00902: invalid datatype
.
Und das ist die Definition der "subjectid_tab".
Kann mir bitte jemand sagen, was ist der Fehler.Ist etwas falsch mit meinem Verfahren.
Dies funktioniert nicht in Oracle 11g, falls jemand anderes Probleme hat. PLS-00355: Verwendung von pl/sql Tabelle nicht in diesem Zusammenhang definiert. In Oracle 12c sieht alles gut aus. Als Workaround in 11g, wenn Sie nur an assoziative Arrays (wie nodejs) binden können, habe ich zuerst mein assoziatives Array in eine geschachtelte Tabelle (kein INDEX BY-Suffix) geloopt; was die Leistung tötet, aber was kannst du tun? Wenn jemand einen besseren Weg kennt, zögern Sie nicht, die Hand zu reichen. –