Unsere Datenschutzrichtlinie wird in Kürze aktualisiert. Bitte sehen Sie sich die Vorschau an.

Oracle PL/SQL Grundkurs

Mit einem CURSOR Daten beschaffen

Testen Sie unsere 2019 Kurse

10 Tage kostenlos!

Jetzt testen Alle Abonnements anzeigen
Die gängige Weise, mit PL/SQL Daten aus der Datenbank zu beschaffen, ist der sogenannte CURSOR. In diesem Video zeigt Ihnen der Trainer, wie Sie einen CURSOR aufbauen, um anschließend auf Grundlage einer FETCH-INTO-Anweisung Variablen zu füllen.

Transkript

Die gängige Art und Weise, wie man mit PL/SQL mehrere Datensätze aus der Datenbank beschafft, ist über sogenannte CURSOR. In diesem Video werden wir uns CURSOR genauer anschauen, denn wir haben vor, die Messungen in unserem durchgehenden BMI-Programmierbeispiel auszuwerten. Hier werde ich jetzt wieder eine neue Datei öffnen. Und zwar nenne ich sie kap05 und dann messungen_ausgeben. Zunächst werde ich das Syntax Highlighting wieder im Hauptmenü anschalten. Dann beginne ich mit unserer Procedure über CREATE OR REPLACE PROCEDURE und die Procedure nenne ich messungen_ausgeben. Klammer auf. Unsere START-Procedure soll bloß den Benutzernamen als einzigen Eingangswert erhalten. Hiermit soll sie dann die gesamten Messwerte aus der Datenbank holen und das Ergebnis auf der Konsole ausgeben. Deshalb werde ich den Benutzernamen als Eingangswert definieren und die Werte für die Körpergröße, das Gewicht und die Zeitpunkte und auch den berechneten BMI-Wert im Deklarationsabschnitt später definieren. Hier, also im Kopf, als Eingangsparameter, nur name_inNone und dann brauchen wir auch das Schlüsselwort IN, weil es dann sauberer und besser zu lesen ist. Und dann setze ich den Datentyp über benutzer.name, das heißt, über das Attribut %TYPE und ich bin dann mit diesem Teil fertig. Hinter der Klammer kommt dann das Schlüsselwort ES und im Deklarationsabschnitt werde ich jetzt die Variable groesse deklarieren. Der Datentyp ist benutzer.groesse%Type Die Variable gewicht hat den Datentypen messung.gewicht%TYPE Der Zeitpunkt mit dem Datentypen messung.zeitpunkt %TYPE Dann brauchen wir auch noch eine Variable mit dem Namen bmi und die ist vom Typ NUMBER 5,2 Drei Vorkommastellen und zwei Nachkommastellen. Wenn man mit einem CURSOR arbeitet, führt man vier elementare Schritte durch. Diese lauten auf Englisch declare, open, fetch und close. Zu Deutsch deklarieren, öffnen, holen und schließen. Ich beginne nun mit der Deklaration, bei der man im Grunde genommen lediglich dem CURSOR einen Namen vergibt, und diesen Namen mit einer SELECT-Anweisung verbindet. Das Schlüsselwort für die Deklaration des CURSORS nennt sich CURSOR. Also schreibe ich hier unten einfach CURSOR hin und ich nenne den CURSOR c_bmi. Dahinter muss ich das Schlüsselwort ES setzen. Und hier kann ich jetzt dahinter die SELECT-Anweisung setzen, die die Daten für meine Ausgabe besorgt. Hierbei werde ich jetzt ein JOIN verwenden, der die Tabelle benutzer mit der Tabelle messung verbindet. Also SELECT und ich schreibe erstmal die Schlüsselwörter hin FROM dann kommt hier der JOIN hin mit ON werden wir dafür sorgen, dass wir die Verknüpfung hinkriegen, und dann werden wir noch eine OR Bedingung brauchen. Also legen wir los. Die Tabelle von der wir unsere Daten beziehen, die erste nennt sich benutzer ein Alias werden wir auch setzen, b. Die zweite Tabelle, hinter den JOIN, die nennt sich messung. Ein Alias setzen wir auch, m. Und wir verknüpfen die beiden Tabellen über b.id, also über den Primärschlüssel von benutzer mit dem Fremdschlüssel m.benutzer_id. Hinter dem SELECT rufe ich jetzt auf oder besorge, beschaffe mir d.groesse, m.gewicht und m.zeitpunkt Über die WHERE-Bedingung sorge ich dafür, dass ich nur die Werte erhalte, die zu meinem Eingangsparameter name_in zugehörig sind. Also WHERE b.name = name_in. Semikolon. Kommen wir nun zum Ausführungsabschnitt. Den leite ich mit dem Schlüsselwort BEGIN ein. Und jetzt komme ich zum zweiten Schritt vom CURSOR. Und zwar hier habe ich den deklariert. Jetzt muss ich ihn öffnen, die Daten beschaffen und ihn wieder schließen. Also OPEN FETCH und CLOSE Das sind die drei Schlüsselwörter, die ich jetzt gleich brauche. Mit dem Schlüsselwort OPEN, öffne ich den CURSOR. Hier muss ich jetzt dahinter den Namen des CURSORS setzen c_bmi, so hieß der. Und die Zuweisung der Ergebnismenge zu den Variablen erfolgt mit Hilfe der Schlüsselwörter FETCH und auch INTO. Also sage ich an dieser Stelle FETCH c_bmi, ich setze also den Namen des CURSORS und hinter dem INTO schreibe ich, wohin die Werte dieser drei Spaltenfelder hineingeschrieben werden sollen und zwar in groesse gewicht und in zeitpunkt. Um den CURSOR zu schließen, muss ich hier noch den Namen hinzufügen. c_bmi; Wenn das Ergebnis aus einem einzigen Datensatz bestehen würde, wären wir mit der Beschaffung der Daten hiermit jetzt schon fertig. Allerdings sollte die Tabelle messung zu unserem Benutzer mehrere Messungen enthalten. Deshalb müssen wir den FETCH in eine Loop-Schleife setzen. Das mache ich jetzt wie folgt: LOOP Das rücke ich etwas nach vorne. Hier fehlt ein Semikolon und END LOOP. Da wir es hier mit einer Endlosschleife zu tun haben, müssen wir nun irgendwie dafür sorgen, dass die Schleifendurchläufe über das Schlüsselwort EXIT beendet werden. Genauer gesagt, mit EXIT WHEN und einem logischen Ausdruck. Wie können wir innerhalb der Schleife die Information erhalten, dass kein Datensatz mehr vorliegt und somit kein Schleifendurchlauf mehr erforderlich ist? Zu diesem Zweck bietet PL/SQL sogenannte CURSOR-Attribute an. Eines der CURSOR-Attribute nennt sich %NOTFOUND. Das können wir jetzt nutzen, um herauszufinden, ob kein Datensatz mehr durchlaufen werden soll. Hierfür setze ich jetzt das Attribut %NOTFOUND hinter die Schlüsselwörter EXIT WHEN und bin dann hiermit fertig. Für die Ausgabe der Ergebniswerte werde ich die Funktion messungen auswerten jetzt einsetzen, die wir in einem vorangegangenen Video erstellt hatten und zwar schreibe ich zunächst mal hier drunter die Berechnung der Formel hinein. Also bmi = gewicht / groesse zum Quadrat. Jetzt kann ich meine Ergebnisse ausgeben dbms_output.putline Hier drin schreibe ich jetzt rein bmi Doppelpunkt dann den Wert vom bmi wieder den Konkatenationsoperator nochmal einen Doppelpunkt und dann nochmal den Konkatenationsoperator und hier drunter rufe ich jetzt bmi_auswerten auf mit dem bmi-Wert Dann wieder den Konkatenationsoperator mit einem Doppelpunkt. Und jetzt gebe ich noch den Zeitpunkt aus. Damit es hier an dieser Stelle etwas netter wird, werde ich den Zeitpunkt mal umwandeln zu einer Zeichenkette, die für uns besser lesbar ist. Und zwar werde ich den Tag und den Monat hier reinsetzen und dann noch die Uhrzeit, im Vierundzwanziger-Format, die Minuten dazu, und dahinter kann ich jetzt auch noch das Gewicht einsetzen, das ist vielleicht auch noch von Interesse, in Kilogramm. Ich belasse es mal hier dabei. Und beende das PL/SQL-Programm über END; / An dieser Stelle würde ein Punkt besser aussehen. Hier habe ich mich noch vertippt! Semikolon. Das speichere ich jetzt mal ab und das probieren wir mal aus. Und zwar führe ich das SQL-Skript über start aus. Es gibt hier noch irgendwelche Fehler. In Zeile siebzehn. Hier muss der CURSOR-Name vorgesetzt werden. Also nochmal. Ich starte das Programm wieder und jetzt ist der Fehler weg. Jetzt können wir das Ganze mal ausprobieren. execute messungen_ausgeben von Alex. Dann sehen Sie, dass das Programm jetzt funktioniert. In diesem Video, habe ich Ihnen gezeigt, wie Sie einen CURSOR verwenden, Dabei haben Sie auch gelernt, dass man für die Verwendung eines CURSORS, vier Schritte durchführen muss, nämlich: die Deklaration, die Öffnung des CURSORS, die Beschaffung der Daten und das Schließen des CURSORS.

Oracle PL/SQL Grundkurs

Entdecken Sie grundlegende Programmstrukuren, Stored Procedures und Functions in PL/SQL und sehen Sie, wie Sie auf Daten zugreifen können.

3 Std. 58 min (32 Videos)
Derzeit sind keine Feedbacks vorhanden...
 

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!