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

Erfassungsmethode:Trim-Prozedur in der Oracle-Datenbank

Willkommen zurück zum letzten Tutorial in der PL/SQL Collection-Reihe. Die bisher längste Video-Tutorial-Serie auf dem Kanal. In diesem Tutorial lernen wir die letzte PL/SQL-Erfassungsprozedur kennen, die die TRIM-Prozedur in der Oracle-Datenbank ist.

Was ist die PL/SQL-Erfassungsmethode TRIM?

Die Sammlungsmethode TRIM in Oracle db ist eine überladene Prozedur, mit der Sie ein oder mehrere Elemente vom Ende einer Sammlung entfernen können.

Auf wie viele Arten können wir die TRIM-Prozedur der Erfassungsmethode in Oracle Database aufrufen?

Da die PL/SQL-Erfassungsmethode TRIM eine überladene Prozedur ist, können wir sie auf zwei verschiedene Arten aufrufen. Diese beiden unterschiedlichen Aufrufe der TRIM-Prozedur sind:

  1. TRIM:Trimmvorgang ohne Parameter.

Wenn wir die TRIM-Prozedur ohne Parameter verwenden, wird nur ein Element vom Ende der Sammlung entfernt.

  1. TRIM:Trimmverfahren mit einem Parameter.

Die TRIM-Prozedur, die durch Übergabe eines Arguments aufgerufen wird, entfernt die Anzahl der Elemente vom Ende der Sammlung, wie durch den Parameter angegeben. Dieser Parameter muss eine gültige Ganzzahl sein. Außerdem sollte sie nicht größer sein als die maximale Anzahl von Elementen, die Ihre Sammlung hat.

Info:Die Trimmprozedur löst einen Fehler aus, wenn versucht wird, den Leerraum unter 0 Elemente zu trimmen.

Können wir die PL/SQL-Erfassungsmethode TRIM mit allen drei Arten von Erfassungen verwenden?

Leider nein, können wir nicht. Ähnlich wie die PL/SQL-Erfassungsprozedur EXTEND kann die Prozedur TRIM nur mit verschachtelten Sammlungstabellen und VARRAYs verwendet werden. Wir können es jedoch nicht mit assoziativen Arrays verwenden.

Was passiert, wenn wir die PL/SQL-Erfassungsprozedur TRIM mit einem assoziativen Array verwenden?

Wenn die Erfassungsmethode Trim von Oracle-Datenbankversionen mit einem assoziativen Array verwendet wird, erhalten Sie einen Kompilierzeitfehler .

Was ist die Spezifikation des Trim-Verfahrens in der Oracle-Datenbank?

Die Spezifikation des Sammelverfahrens TRIM lautet:

PROCEDURE TRIM (n PLS_INTEGER:= 1);

Wenn n NULL ist, wird trim nichts tun.

Ich habe dich in sagen hören das Video, das wir auch SUBSCRIPT_BEYOND_COUNT-Ausnahme erhalten können?

Ja, die PL/SQL-Erfassungsmethode TRIM löst die Ausnahme SUBSCRIPT_BEYOND_COUNT aus. Wenn versucht wird, mehr Elemente zu trimmen, als tatsächlich in der Sammlung vorhanden sind.

Sie finden das Beispiel dieser Ausnahme, das ich im Video weiter unten in diesem Blog demonstriert habe. Wenn Sie sich das Video ansehen möchten, dann ist es hier. Wenn nicht, können Sie gerne nach unten scrollen.

Gibt es weitere Ausnahmen im Zusammenhang mit der PL/SQL-Erfassungsmethode Trim, über die wir Bescheid wissen sollten?

Ja, es gibt eine weitere Ausnahme, die mit der TRIM-Prozedur verbunden ist, und das ist die Ausnahme COLLECTION_IS_NULL.

Immer wenn Sie die Sammelprozedur TRIM auf eine nicht initialisierte verschachtelte Tabelle oder VARRAY anwenden, löst der Compiler die Ausnahme COLLECTION_IS_NULL aus.

Können wir die TRIM- und DELETE-Prozedur zusammen verwenden?

Nein, wir können die Prozeduren TRIM und DELETE der Sammlungen nicht zusammen verwenden. Die gemeinsame Verwendung führt zu unerwarteten Ergebnissen.

Stellen Sie sich ein Szenario vor, in dem Sie ein Element gelöscht haben, das sich am Ende einer VARRAY-Variablen befindet, und anschließend das TRIM-Verfahren auf dasselbe anwenden. Können Sie die Anzahl der Elemente erraten, die Sie möglicherweise entfernt haben? Sie könnten verwirrt sein, zu glauben, dass zwei Elemente entfernt wurden, aber Tatsache ist, dass nur eines entfernt wurde. TRIM wirkt auf den Platzhalter, der durch die Prozedur DELETE hinterlassen wurde.

Um diese verwirrenden und beunruhigenden Ergebnisse zu vermeiden, empfiehlt der Oracle-Datenbanksupport dringend, diese beiden Verfahren ausschließlich für eine bestimmte Sammlung zu verwenden.

Was ist mit den Beispielen? Machen wir sie in diesem Blog oder nicht?

Sicher, wir werden auf jeden Fall die Beispiele in diesem Blog machen. Eigentlich wollte ich Ihnen gerade die Demonstration jedes TRIM-Aufrufs der PL/SQL-Erfassungsprozedur zeigen, die wir oben erwähnt haben. Los geht's:

1. PL/SQL-Erfassungsverfahren TRIM ohne Parameter.

SET SERVEROUTPUT ON;
DECLARE
    TYPE my_nestedTable IS TABLE OF number;
    nt_obj  my_nestedTable := my_nestedTable(1,2,3,4,5);
BEGIN
    nt_obj.TRIM;
    DBMS_OUTPUT.PUT_LINE ('After TRIM procedure');
    FOR i IN 1..nt_obj.COUNT
    LOOP
        DBMS_OUTPUT.PUT_LINE (nt_obj (i));
    END LOOP;
END;
/ 

2. Erfassungsverfahren TRIM mit Parameter.

SET SERVEROUTPUT ON;
DECLARE
    TYPE my_nestedTable IS TABLE OF number;
    nt_obj  my_nestedTable := my_nestedTable(1,2,3,4,5);
BEGIN
    nt_obj.TRIM (3);
    DBMS_OUTPUT.PUT_LINE ('After TRIM procedure');
    FOR i IN 1..nt_obj.COUNT
    LOOP
        DBMS_OUTPUT.PUT_LINE (nt_obj(i));
    END LOOP;
END;
/

3. PL/SQL-Erfassungsverfahren TRIM SUBSCRIPT_BEYOND_COUNT Ausnahme.

SET SERVEROUTPUT ON;
DECLARE
    TYPE my_nestedTable IS TABLE OF number;
    nt_obj  my_nestedTable := my_nestedTable(1,2,3,4,5);
BEGIN
    nt_obj.TRIM(6);
    DBMS_OUTPUT.PUT_LINE ('After TRIM procedure');
    FOR i IN 1..nt_obj.COUNT
    LOOP
        DBMS_OUTPUT.PUT_LINE (nt_obj(i));
    END LOOP;
END;
/

Die Ausnahme SUBSCRIPT_BEYOND_COUNT tritt auf, wenn wir ein Argument übergeben, das größer ist als die Gesamtzahl der Elemente der Sammlung. Im obigen Beispiel ist die Sammlung, die wir verwenden, eine verschachtelte Tabelle mit dem Namen „my_nestedTable“, in der 5 numerische Elemente gespeichert sind. Im Prozeduraufruf haben wir den Compiler jedoch angewiesen, 6 Elemente zu TRIM, was definitiv unmöglich ist, daher löst der Compiler in diesem Fall die Ausnahme SUBSCRIPT_BEYOND_COUNT aus.

4. Erfassungsverfahren TRIM mit VARRAY.

SET SERVEROUTPUT ON;
DECLARE
 TYPE inBlock_vry IS VARRAY (5) OF NUMBER;
 vry_obj inBlock_vry := inBlock_vry(1, 2, 3, 4, 5);
BEGIN
    --TRIM without parameter
    vry_obj.TRIM;
    DBMS_OUTPUT.PUT_LINE ('After TRIM procedure');
    FOR i IN 1..vry_obj.COUNT
    LOOP
        DBMS_OUTPUT.PUT_LINE (vry_obj(i));
    END LOOP;
    --TRIM with Parameter
    vry_obj.TRIM (2);
    DBMS_OUTPUT.PUT_LINE ('After TRIM procedure');
    FOR i IN 1..vry_obj.COUNT
    LOOP
        DBMS_OUTPUT.PUT_LINE (vry_obj(i));
    END LOOP;
END;
/

Das ist das Tutorial, das die Konzepte des TRIM-Verfahrens der PL/SQL-Erfassungsmethode in Oracle Database erklärt.

Hoffe es hat euch gefallen. Verbinden Sie sich mit mir auf meiner Facebook-Seite, um weitere Updates und Einblicke in Oracle Database-Konzepte zu erhalten. Danke, schönen Tag noch!