Werden Oracle PL / SQL-Arrays von 0 oder von 1 indiziert?

8

Ich habe vor mir ein Stück Code wie folgt:

%Vor%

l_RowSet ist ein ApEx-Typ - apex_plugin_util.t_column_value_list - definiert also:

%Vor%

wobei wwv_flow_global.vc_arr2 als

definiert ist %Vor%

Das vc_arr2 wird von der Funktion apex_plugin_util.get_data an meinen Code zurückgegeben. Vc_arr2 wird durch die Spalte column und nicht durch die Zeile indiziert.

Wie ich am besten feststellen kann, bedeutet dies, dass die Daten effektiv in einem 2D-Array gespeichert werden, indiziert nach Spalten und dann nach Zeilen.

Wird bei Verwendung der LOOP-Anweisung von null oder von eins indiziert? Weil es mir scheint, dass ich in der Lage sein sollte, diese LOOP überflüssig zu machen, dh:

%Vor%

Aber ich muss im Voraus wissen, ob ich 0 oder 1 als erste Zeile geben soll.

Ich kann keine klare Antwort in den Oracle-Dokumenten finden (nicht überraschend, "Index" ist ein ziemlich weit verbreiteter Begriff) und ein Blick durch SO zeigt niemandem mit der gleichen Frage auch nicht.

    
Jacques Chester 27.07.2012, 03:46
quelle

1 Antwort

8

Ein assoziatives Array ist nicht notwendigerweise dicht. Es kann ein Element bei Index 0 geben, ein Element bei Index -1, ein Element bei Index 1. Oder Sie haben Elemente bei den Indizes 17, 42 und 127. Der Code, den Sie gepostet haben, impliziert das assoziative Array ist dicht und die Indizes beginnen bei 1.

Im speziellen Fall von apex_plugin_util.get_data sollte die Sammlung dicht sein und bei 1 beginnen. Wenn die Schleife tatsächlich nichts anderes als das tut, was Sie gepostet haben, können Sie sie ersetzen, indem Sie das letzte Element von l_RowSet(1) holen. dh

%Vor%     
Justin Cave 27.07.2012, 03:59
quelle

Tags und Links