Suchen Sie nach bestimmten varchar in Oracle Nested Table

8

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%     
Andy 14.06.2011, 18:55
quelle

4 Antworten

8

Für die Einzelwertprüfung bevorzuge ich den "member" -Operator .

%Vor%     
zep 15.06.2011, 06:06
quelle
5

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.

    
Justin Cave 14.06.2011 19:30
quelle
3

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.

    
be here now 14.06.2011 21:39
quelle
3

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%     
Dave Costa 14.06.2011 22:16
quelle

Tags und Links