Ich bin neu in PL-SQL und habe Schwierigkeiten, eine übersichtliche Dokumentation von Operationen zu finden. Bitte korrigieren Sie missbrauchte Terminologie usw.
Ich habe einen geschachtelten Tabellentyp, den ich als Parameter für eine gespeicherte Prozedur verwende.
%Vor%In meiner gespeicherten Prozedur wird die Tabelle initialisiert und ausgefüllt. Angenommen, ich habe eine VARCHAR2-Variable und möchte den Wert "true" oder "false" angeben, wenn dieser varchar in der geschachtelten Tabelle vorhanden ist.
Ich habe es versucht
%Vor%aber ich bekomme einen ORA-6502
Gibt es einen einfacheren Weg als das Iterieren?
%Vor%Sie können den Operator MULTISET INTERSECT verwenden, um zu bestimmen, ob die Zeichenfolge, an der Sie interessiert sind, in der Sammlung vorhanden ist. Zum Beispiel
%Vor%druckt "Found King" aus, wenn die Zeichenfolge "KING" ein Element der l_enames-Sammlung ist.
Sie sollten einen Array-Index und keinen Array-Wert an ein exists
übergeben, wenn Sie ermitteln möchten, ob dieses Element in der Auflistung vorhanden ist. Geschachtelte Tabellen werden durch Ganzzahlen indiziert, sodass es nicht möglich ist, sie durch Zeichenfolgen zu referenzieren.
Sie sollten sich jedoch assoziative Arrays anstelle von Sammlungen ansehen, wenn Sie Ihr Array-Element nach String-Index referenzieren möchten. Das sieht dann so aus:
%Vor% Wenn Ihre Array-Werte unterschiedlich sind, können Sie paarweise Arrays erstellen, die sich gegenseitig referenzieren.
arr('b') := 'a'; arr('a') := 'b';
Diese Technik kann Ihnen helfen, jedes Element und seinen Index leicht nachzuschlagen.
Wenn eine geschachtelte Tabelle als Schema-Level-Typ deklariert wurde, kann sie wie jede andere SQL-Abfrage als Tabelle verwendet werden. So können Sie eine einfache Funktion wie folgt schreiben:
%Vor%