Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Erfassungsmethode:PRIOR- und NEXT-Funktionen in der Oracle-Datenbank

Wie wir in der Einführung in PL/SQL-Erfassungsmethoden gesehen haben, gibt es 7 Erfassungsfunktionen in Oracle Database. Unter diesen sieben Funktionen haben wir bereits die ersten fünf Methoden kennengelernt. Prior und Next sind die letzten beiden PL/SQL-Erfassungsmethoden/-funktionen, die noch untersucht werden müssen.

Daher werden wir uns im heutigen PL/SQL-Blog ausführlich mit diesen beiden unberührten Erfassungsmethoden befassen.

Was sind vorherige und nächste Erfassungsfunktionen?

Es ist immer gut, einige Funktionen im Ärmel zu haben, die Ihnen beim Navigieren durch den Inhalt Ihrer Sammlung helfen können. Die Funktionen Prior &Next könnten diese Funktionen sein.

Beide Funktionen nehmen einen Index der Sammlung als Eingabe und geben das Ergebnis zurück.

Beispielsweise nimmt die PL/SQL-Erfassungsmethode PRIOR einen Index als Eingabe und gibt den Wert zurück, der im vorherigen niedrigsten Index gespeichert ist. Wohingegen die Sammelmethode NEXT den Wert vom nächsthöheren Index zurückgibt.

Sind vorherige und nächste Erfassungsfunktionen oder -verfahren?

Sowohl Prior als auch Next sind Funktionen.

Können wir diese beiden Funktionen mit allen drei Arten von Sammlungen verwenden?

Ja, sowohl die Funktionen „Vorherige“ als auch „Nächste“ können mit allen drei Arten von Sammlungen verwendet werden.

Wann geben die PL/SQL-Erfassungsmethoden Prior und Next null zurück?

Die Sammlungsmethode Prior gibt null zurück, wenn keine niedrigeren tiefgestellten Werte verfügbar sind, und die Sammlungsmethode Next gibt null zurück, wenn keine höheren zurückzugebenden tiefgestellten Werte verfügbar sind.

In einfachen Worten können wir sagen, dass diese beiden Sammlungsfunktionen Null zurückgeben, wenn sie mit dem ersten bzw. letzten Index einer Sammlung verwendet werden .

Was wird die Ausgabe der Collection-Methode Next und Prior sein, wenn wir sie mit einem assoziativen Array verwenden?

Wenn die Erfassungsmethoden PRIOR und NEXT mit assoziativen Arrays verwendet werden, geben sie eine Ausgabe des Datentyps VARCHAR2 oder LONG zurück.

Ich habe gehört, dass diese Methoden irgendeine Art von Ausnahme auslösen. Ist es wahr?

Ja, das ist wahr. Wenn eine dieser Funktionen auf eine nicht initialisierte verschachtelte Tabelle oder einen Varray angewendet wird, lösen sie die Ausnahme COLLECTION_IS_NULL aus.

Können Sie uns zeigen, wie diese Funktionen in unserem Code verwendet werden?

Sicher warum nicht! Ich zeige Ihnen die Anwendung sowohl der Prior- als auch der Next-Erfassungsfunktionen mit Hilfe eines sehr einfachen Codes.

Beispiel für frühere Erhebungsmethoden.

In dieser Methode lernen wir, wie man die Sammelmethode Prior mit Nested Table verwendet.

SET SERVEROUTPUT ON;
DECLARE
    TYPE my_nested_table IS
        TABLE OF NUMBER;
    var_nt   my_nested_table := my_nested_table(9,18,27,36,45,54,63,72,81,90);
BEGIN
        dbms_output.put_line('Index prior to index 3 is '||var_nt.PRIOR(3)); 
        dbms_output.put_line('Value before 3rd Index is '||var_nt(var_nt.PRIOR(3))); 
END;
/

Im obigen anonymen PL/SQL-Block haben wir zwei Ausgabeanweisungen mit „Prior Function Call“. Die erste Ausgabeanweisung gibt die Indexnummer vor der Indexnummer 3 zurück, in der ein Wert gespeichert ist. In unserem Fall ist der Index vor Index Nummer 3 2. Somit ist 2 die Ausgabe der ersten Ausgabeanweisung.

In der zweiten Ausgabeanweisung haben wir die Prior-Funktion aufgerufen und als Eingabe für das Sammlungsobjekt bereitgestellt.

var_nt(var_nt.PRIOR(3)) 

Die Oracle-Engine führt zuerst die Collection-Funktion Prior aus (nennen wir es Teil 1) und führt dann unter Verwendung des Ergebnisses aus Teil 1 das Collection-Objekt aus (nennen wir es Teil 2) und erzeugt das Endergebnis, das in unserem Fall 18 sein wird. Kopieren Sie den Code und versuchen Sie, ihn selbst auszuführen.

Was passiert, wenn wir den vorherigen niedrigsten Index aus der verschachtelten Tabelle löschen?

Nun stellt sich die Frage, was passiert, wenn Sie den vorherigen niedrigsten Index löschen, der in unserem Code 2 ist. In diesem Fall wird das Ergebnis definitiv nicht dasselbe sein. Die vorherige Funktion gibt den vorherigen niedrigsten Index zurück. Aber dieser Index muss einen gewissen Wert enthalten.

Versuch es selber. Hier ist der Code.

DECLARE
    TYPE my_nested_table IS
        TABLE OF NUMBER;
    var_nt   my_nested_table := my_nested_table(9,18,27,36,45,54,63,72,81,90);
BEGIN
        var_nt.DELETE(2);
        dbms_output.put_line('Index prior to index 3 is '||var_nt.PRIOR(3)); 
        dbms_output.put_line('Value before 3rd Index is '||var_nt(var_nt.PRIOR(3))); 
END;
/

Beispiel für die nächste Erhebungsmethode.

Sie können die PL/SQL-Erfassungsmethode Next genauso verwenden, wie Sie die Prior-Funktion im obigen Code verwendet haben. Die Sammelmethode NEXT gibt den Wert aus dem nächsthöheren Index zurück. Hier ist das Beispiel

DECLARE
    TYPE my_nested_table IS
        TABLE OF NUMBER;
    var_nt   my_nested_table := my_nested_table(9,18,27,36,45,54,63,72,81,90);
BEGIN
        dbms_output.put_line('Next Higher Index to index 3 is '||var_nt.NEXT(3)); 
        dbms_output.put_line('Value after 3rd Index is '||var_nt(var_nt.NEXT(3))); 
END;
/

Beide Beispiele sind fast gleich, mit Ausnahme des Aufrufs der Sammlungsfunktion. Im Ausführungsabschnitt dieses PL/SQL-Blocks haben wir wieder zwei Ausgabeanweisungen. Die erste Ausgabeanweisung gibt die nächste nicht leere Indexnummer zurück, während die zweite die in diesem Index gespeicherten Daten zurückgibt. Die Funktionsweise dieser beiden Anweisungen ist die gleiche wie oben besprochen. Fahren Sie fort und kopieren Sie den Code und sehen Sie sich die Ausgabe an.

Das war das ausführliche Tutorial zur PL/SQL-Erfassungsmethode Next und Prior. Ich hoffe, Sie hatten Spaß beim Lesen und haben etwas Neues gelernt. Stellen Sie sicher, dass Sie diesen Blog in Ihren sozialen Medien teilen. Um diesen Blog auf Facebook zu teilen, klicken Sie hier und für Twitter klicken Sie hier.

Vielen Dank und einen schönen Tag!