Wie andere Sprache auch verfügt Oracle in PL/SQL auch über For-Schleifen mit denen jegliche Iterationen durchgeführt werden. Sehr oft werden diese in Verbindung mit Cursor genutzt, um die Ergebnisse davon einzeln zu durchlaufen.

declare
begin
  for i in 1 .. 10
  loop
    dbms_output.put_line(i);
  end loop;
end;

Hierbei muss die interne Zählvariable i nicht im declare-Block angegeben werden.


Eine weitere schon beschriebene Anwendung ist in Verbindung mit Cursor:

declare
  cursor cCur is
  select * from employees where last_name like 'A%';
begin
  for vData in cCur
  loop
    dbms_output.put_line(vData.Last_Name);
  end loop;
end;

Die For-Schleife geht alle Daten welche die Abfrage des Cursors liefert einzeln durch und speichert den aktuellen Datensatz wieder in der interne Schleifenvariablen vData. Innerhalb der Schleife kann mittels dem ‚.‘ Operator auf die einzelnen Ergebnisspalten (hier LAST_NAME) zugegriffen werden.

For-Schleifen können aber auch für Tabellentypen angewandt werden:

declare
  type person is record(
    LAST_NAME varchar2(16),
    AGE       number);

  type personTab is table of person;

  vPersons personTab := personTab();
begin
  -- befüllen der Tabelle
  vPersons.extend;
  vPersons(1).LAST_NAME := 'KING';
  vPersons(1).AGE := '32';

  vPersons.extend;
  vPersons(2).LAST_NAME := 'QUEEN';
  vPersons(2).AGE := '31'; 

  for i in vPersons.first .. vPersons.last
  loop
    dbms_output.put_line(vPersons(i).LAST_NAME || ' - ' || vPersons(i).AGE);
  end loop;
end;

Zu Beginn wird ein neuer Typ (person) und ein Tabellentyp (personTab) dazu definiert. Anschließend wird eine neue Variable des Tabellentyps deklariert und initialisiert, damit neue Elemente der Tabelle hinzugefügt werden können. Wir fügen anschließend 2 Elemente der Tabelle zu und iterieren durch die Tabelle mit unserer For-Schleife. Eine Tabelle hat die zwei Attribute first und last mit dem der 1. und letzte Index der Tabelle zurückgeliefert wird. Wir nutzen diese Attribute um der internen Zählvariable i zu sagen, wo wir beginnen bzw. enden. Mit dieser Variablen greifen wir dann auch auf die einzelnen Elemente der Tabelle zu.

 Antworten

   
Impressum Suffusion theme by Sayontan Sinha