Zurücksetzen eines assoziativen Arrays in PL / SQL?

7

Dies ist eine dieser "Es gibt bessere Wege" Fragen. Lassen Sie mich das Problem aufstellen, dann gebe ich Ihnen meine gehackte Lösung, und vielleicht können Sie eine bessere Lösung vorschlagen. Danke!

Nehmen wir diesen kleinen Leckerbissen von PL / SQL

%Vor%

Macht das Sinn? Ich muss es im Grunde auf etwas zurücksetzen. Wenn es eine Zahl ist, die bei Null beginnt, könnte ich einfach Zahl sagen: = 0; an der Spitze jeder Iteration und damit fertig sein. Aber das ist keine Nummer, es ist ein Typ, den ich einfach mit einem clean: = 0 zurücksetzen kann.

Wie auch immer, auf meinen Hack:

%Vor%

Ich dachte, wenn ich es schaffen würde, ein Mitglied desselben Typs in einem Originalzustand zu erhalten, dann kann ich die Arbeitsvariable einfach auf den Wert des Originals zurückstellen. Und, überraschenderweise, es funktioniert (denke ich.) Aber es muss einen besseren Weg geben. Kann jemand helfen?

T'anks!

    
steve 13.11.2009, 20:47
quelle

2 Antworten

20

Der einfachste Weg:

%Vor%

Eine andere Möglichkeit besteht darin, die Variable in der FOR -Schleife zu deklarieren. Auf diese Weise wird es für jeden Durchgang neu erstellt.

So:

%Vor%     
Majkel 13.11.2009, 21:15
quelle
1

Werden Sie Daten aus der Zootabelle in eine Sammlung einlesen? Dann gibt es einen besseren Weg:

%Vor%

Bulk Collect löscht die Sammlung automatisch, bevor sie abgerufen wird, und es arbeitet schneller als zeilenweise in der Schleife. Leider funktioniert es nicht mit Datensätzen, so dass Sie für jedes Feld mehrere PL / SQL-Tabellen benötigen.

Weitere Informationen finden Sie hier: Abfrageergebnisse in Collections mit abrufen die BULK COLLECT Klausel

    
Egor Rogov 14.11.2009 17:26
quelle

Tags und Links