PL/SQL - Arrays

Hallo, angehende Programmierer! Heute tauchen wir ein in die aufregende Welt der PL/SQL-Arrays. Als Ihr freundlicher Nachbarschaftsinformatiklehrer bin ich hier, um Sie auf dieser Reise Schritt für Schritt zu führen. Machen Sie sich keine Sorgen, wenn Sie neu im Programmieren sind - wir beginnen mit den Grundlagen und arbeiten uns hinauf. Also, holen Sie sich Ihre virtuellen Notizblöcke und los geht's!

PL/SQL - Arrays

Was sind Arrays in PL/SQL?

Bevor wir ins tiefe Wasser springen, lassen Sie uns verstehen, was Arrays sind. Stellen Sie sich vor, Sie haben eine Menge Schokoladen und entscheiden sich stattdessen, sie in eine ordentliche kleine Box zu legen, anstatt sie über Ihren Schreibtisch verstreut zu lassen. Diese Box ist wie ein Array - sie ist ein Behälter, der mehrere Elemente desselben Typs enthält.

In PL/SQL ist ein Array eine Sammlung von Elementen desselben Datentyps. Es ermöglicht Ihnen, mehrere Werte unter einem einzigen Variablennamen zu speichern und zu manipulieren. quite praktisch, nicht wahr?

Arten von Arrays in PL/SQL

PL/SQL bietet drei Arten von Arrays:

  1. Assoziative Arrays (Index-By-Tabellen)
  2. Geschachtelte Tabellen
  3. Variablengrößen-Arrays (VARRAYs)

Lassen Sie uns uns zunächst auf VARRAYs konzentrieren, da sie ein großartiger Einstiegspunkt für Anfänger sind.

Erstellen eines Varray-Typs

Ein VARRAY (Variable-size Array) ist eine Art Array in PL/SQL, das eine maximale Größenbegrenzung hat. Es ist wie ein Schokoladenbox mit einer festen Anzahl von Fächern kaufen - Sie können nicht mehr Schokoladen hinzufügen, als die Box halten kann!

Hier ist, wie Sie einen VARRAY-Typ erstellen:

CREATE OR REPLACE TYPE number_array AS VARRAY(5) OF NUMBER;

Lassen Sie uns das herunterbrechen:

  • CREATE OR REPLACE TYPE: Das tells Oracle, einen neuen Typ zu erstellen oder einen vorhandenen zu ersetzen.
  • number_array: Dies ist der Name, den wir unserem neuen Typ geben.
  • AS VARRAY(5): Wir definieren es als VARRAY mit einer maximalen Anzahl von 5 Elementen.
  • OF NUMBER: Jedes Element in diesem Array wird vom Typ NUMBER sein.

Nun sehen wir, wie wir diesen VARRAY in einem PL/SQL-Block verwenden können:

DECLARE
my_numbers number_array := number_array(10, 20, 30, 40, 50);
BEGIN
FOR i IN 1..my_numbers.COUNT LOOP
DBMS_OUTPUT.PUT_LINE('Element ' || i || ': ' || my_numbers(i));
END LOOP;
END;
/

Ausgabe:

Element 1: 10
Element 2: 20
Element 3: 30
Element 4: 40
Element 5: 50

Lassen Sie uns diesen Code analysieren:

  1. Wir deklarieren my_numbers als unseren VARRAY und initialisieren ihn mit 5 Zahlen.
  2. Wir verwenden eine FOR-Schleife, um durch das Array zu iterieren.
  3. my_numbers.COUNT gibt uns die Anzahl der Elemente im Array zurück.
  4. Wir verwenden my_numbers(i), um jedes Element zuzugreifen und es auszugeben.

Arbeiten mit VARRAYs

Nun, da wir einen VARRAY erstellt und initialisiert haben, lassen uns einige Operationen erkunden, die wir an ihm durchführen können.

Hinzufügen von Elementen

Denken Sie daran, dass wir nicht mehr Elemente hinzufügen können, als die maximale Größe, die wir definiert haben. Lassen Sie uns versuchen, ein Element hinzuzufügen:

DECLARE
my_numbers number_array := number_array(10, 20, 30);
BEGIN
my_numbers.EXTEND;
my_numbers(4) := 40;

FOR i IN 1..my_numbers.COUNT LOOP
DBMS_OUTPUT.PUT_LINE('Element ' || i || ': ' || my_numbers(i));
END LOOP;
END;
/

Ausgabe:

Element 1: 10
Element 2: 20
Element 3: 30
Element 4: 40

Hier haben wir EXTEND verwendet, um die Größe des Arrays um 1 zu erhöhen, und dann einen Wert für das neue Element zugewiesen.

Entfernen von Elementen

Wir können auch Elemente vom Ende des Arrays entfernen:

DECLARE
my_numbers number_array := number_array(10, 20, 30, 40, 50);
BEGIN
my_numbers.TRIM(2);  -- Entfernt die letzten 2 Elemente

FOR i IN 1..my_numbers.COUNT LOOP
DBMS_OUTPUT.PUT_LINE('Element ' || i || ': ' || my_numbers(i));
END LOOP;
END;
/

Ausgabe:

Element 1: 10
Element 2: 20
Element 3: 30

Die TRIM-Methode entfernt Elemente vom Ende des Arrays.

Häufige Methoden für VARRAYs

Hier ist eine Tabelle der häufigsten Methoden, die Sie mit VARRAYs verwenden können:

Methode Beschreibung
COUNT Gibt die Anzahl der Elemente im Array zurück
FIRST Gibt den Index des ersten Elements zurück
LAST Gibt den Index des letzten Elements zurück
LIMIT Gibt die maximale Größe des Arrays zurück
EXTEND Erhöht die Größe des Arrays
TRIM Verringert die Größe des Arrays
EXISTS Überprüft, ob ein Element an einem bestimmten Index existiert

Praktisches Beispiel: Schülerleistungen

Lassen Sie uns unser Wissen in einem praktischen Beispiel anwenden. Stellen Sie sich vor, Sie sind ein Lehrer (wie ich!) und möchten die Durchschnittsnote eines Schülers speichern und berechnen:

CREATE OR REPLACE TYPE grade_array AS VARRAY(5) OF NUMBER;

DECLARE
student_grades grade_array := grade_array(85, 90, 78, 92, 88);
total_score NUMBER := 0;
average_score NUMBER;
BEGIN
-- Berechne die Gesamtpunktzahl
FOR i IN 1..student_grades.COUNT LOOP
total_score := total_score + student_grades(i);
END LOOP;

-- Berechne den Durchschnitt
average_score := total_score / student_grades.COUNT;

DBMS_OUTPUT.PUT_LINE('Durchschnittsnote: ' || ROUND(average_score, 2));
END;
/

Ausgabe:

Durchschnittsnote: 86.6

Dieses Beispiel zeigt, wie Sie ein VARRAY verwenden können, um die Noten eines Schülers zu speichern und dann seine Durchschnittsnote zu berechnen und anzuzeigen.

Fazit

Glückwunsch! Sie haben die ersten Schritte in die Welt der PL/SQL-Arrays unternommen. Wir haben die Grundlagen von VARRAYs behandelt, wie man sie erstellt und manipuliert und sie sogar praktisch eingesetzt. Denken Sie daran, dass Arrays wie Schokoladenboxen sind - sie halten Ihre Daten organisiert und leicht zugänglich. Während Sie Ihre Programmierreise fortsetzen, werden Sie Arrays als unglaublich nützliche Werkzeuge in Ihrem Coding-Werkzeugkasten finden.

Weiter üben, neugierig bleiben und keine Angst davor haben, zu experimentieren. Vor Ihnen liegen noch viele Abenteuer als Datenbank-Zauberer! (Entschuldigung, ich konnte den kleinen Lehrer-Humor nicht resistieren.)

Frohes Coden, zukünftige Datenbank-Zauberer!

Credits: Image by storyset