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

Oracle PL/SQL Grundkurs

Mit INSERT Daten speichern

Testen Sie unsere 2017 Kurse

10 Tage kostenlos!

Jetzt testen Alle Abonnements anzeigen
In diesem Video zeigt Ihnen der Trainer, wie Sie für das durchgehende Programmierbeispiel mithilfe einer STORED PROCEDURE Stammdaten in die Tabelle benutzer speichern.

Transkript

In diesem Video werden wir dafür sorgen, dass die Daten bei unserem durchgehenden BMI-Beispielprogramm dauerhaft gespeichert werden. Hierbei müssen wir darin unterscheiden, ob es sich bei den übergebenen Daten um die parent Tabelle benutzer oder um die child Tabelle messung handelt. In der Informatik spricht man hierbei von Stammdaten und Bewegungsdaten. Während statische Grundinformationen, die sich nur selten ändern, als Stammdaten bezeichnet werden, werden operative Geschäftsdaten als Bewegungsdaten bezeichnet. Dementsprechend handelt es sich bei unserem Beispiel bei der Datenbanktabelle benutzer, um Stammdaten und bei der Datenbanktabelle messung, um Bewegungsdaten. Wir werden die Speicherung in zwei Schritten durchführen. Und in diesem Video beginnen wir mit dem ersten Schritt, bei dem wir die Stammdaten in die Tabelle benutzer speichern. Hierfür werde ich jetzt eine neue Skripdatei erstellen, die ich kap_05 benutzer_speichern nennen werde. Ich schreibe also edit und dann kap 05 Unterstrich benutzer_speichern Dann kann es losgehen. Ich werde unser Programm als START-Procedure programmieren, deshalb beginne ich mit CREATE OR REPLACE PROCEDURE Ich brauche auch noch ein Syntax Highlighting, also ich gehe auf Sprachen S SQL. Die Procedure soll heißen benutzer_speichern. Der Procedure werden wir zwei Eingangsparameter übergeben. Nämlich den Benutzernamen und seine Körpergröße. Der Datentyp der Variablen name_in und groesse_in sollte den Datentypen der Spaltenfelder name und groesse in der Datenbanktabelle benutzer entsprechen. Also werde ich auch dementsprechend name_in auf VARCHAR2 setzen und auch groesse_in auf NUMBER setzen. So dass es zum Spaltenfeld passend ist. Das heißt, wir haben jetzt hier die Datentypen gewählt, die als Gegenstücke zu den Datentypen der Spaltenfelder in der Tabelle benutzer passend sind. Eine andere Möglichkeit genau dies zu tun, bietet das Attribut %TYPE und das geht wie folgt: Ich kann hier die Tabelle benutzer referenzieren und dann sagen, das soll genau so wie das Spaltenfeld name sein und dahinter schreibe ich %TYPE. Mit %TYPE kann ich also ausdrücken, dass der Datentyp genau den Datentypen eines bestimmten Spaltenfeldes entsprechen soll. Genau so mache ich das hier. benutzer.groesse%TYPE Diese ist auch die von Oracle empfohlene Variante denn hierdurch ersparen Sie sich redundante Codes. Der Vorteil hierbei ist, dass Änderungen bei dem Spaltenfeld, automatisch auch von Ihrem PL/SQL-Programm übernommen werden. Also, ganz nach dem Motto don't repeat yourself. Sollten sie in PL/SQL-Programmen stets das Attribut %TYPE gebrauchen, wann immer der Datentyp einer Variablen in den Datentypen eines Spaltenfeldes entsprechen soll. Nun, hinter der schließenden Klammer, schreibe ich das Schlüsselwort ES und jetzt brauchen wir im Prinzip nur einen Ausführungsabschnitt, deswegen setze ich das Schlüsselwort BEGIN hinter ES. Und innerhalb des Ausführungsabschnitts, werden wir mit einem einzigen INSERT auskommen. Ich schreibe also INSERT INTO die Tabelle benutzer dann setze ich die Spaltenfelder dazu id, name und groesse Klammer zu. Den Wert für den Primärschlüssel besorge ich jetzt gleich aus der Sequence sec_benutzer Ich schreibe also zunächst mal VALUES. Und zwar werde ich bei der Sequence sec_benutzer ein sogenanntes Pseudospaltenfeld mit dem Namen NEXTWAHL benutzen. Dies ist die Abkürzung für nächster Wert. Also schreibe ich .NEXTVAL Bei NEXTVAL handelt es sich also nicht um ein wirkliches Spaltenfeld einer Datenbanktabelle, sondern stattdessen hat es eine ganz spezielle Bedeutung denn wenn wir das Pseudospaltenfeld NEXTVAL aufrufen, erzeugt die Oracle Database den nächst gültigen Inkrementierungswert. Gleichzeitig gibt sie diesen neuen Wert wieder. Es gibt ein weiteres Pseudospaltenfeld bei einer Sequence und das nennt sich CURRVAL, das wäre dann so. Aber das brauchen wir jetzt nicht. Sondern wir brauchen hier NEXTVAL. Das CVAL, also zu Deutsch aktueller Wert, für current value gibt den aktuellen Wert der Sequence wieder, ohne ihn vorher zu inkrementieren. Aber wie gesagt, an dieser Stelle ist NEXTVAL das Richtige. Dann setze ich dort als nächsten Wert die Variable name_in hinein. Dieser Eingangsparameter enthält den Wert, den der Benutzer eingegeben hatte. Und dann brauche ich noch groesse_in und ich bin dann mit einem Semikolon, mit dem INSERT fertig. Ich schließe das ganze jetzt über END; ab. Einen Schrägstrich dazu. Und ich speichere mein SQL-Skript ab und schließe Notepad++. Nun probiere ich das Beispiel mal aus. Zunächst muss ich mein Skript einmal ausführen, damit die Procedure erstellt wird. @kap05_benutzer_speichern So jetzt ist die Procedure erstellt. Und jetzt kann ich sie ausführen über execute und meinen ersten Benutzer den setze ich auf Alex, Einen Wert für die Körpergröße brauche ich. Und das schicke ich mal ab. In diesem Video haben wir für das durchgehende BMI-Beispielprogramm ein START-Procedure geschrieben über die man einen Benutzer mit seinem Namen und seiner Körpergröße abspeichern kann.

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!