Am 14. September 2017 haben wir eine überarbeitete Fassung unserer Datenschutzrichtlinie veröffentlicht. Wenn Sie video2brain.com weiterhin nutzen, erklären Sie sich mit diesem überarbeiteten Dokument einverstanden. Bitte lesen Sie es deshalb sorgfältig durch.

Oracle PL/SQL Grundkurs

PL/SQL-Datentypen

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Weil die SQL-Datentypen der Oracle Database auch bei PL/SQL-Programmen eingesetzt werden können, zeigt Ihnen der Trainer in diesem Video eine Gegenüberstellung der ANSI-SQL-Datentypen zu den Oracle-Datentypen.

Transkript

In diesem Video werden die elementaren Datentypen von PL/SQL behandelt. Dabei werden wir zunächst die Datentypen des ANSI-SQL und die der Oracle-Database gegenüberstellen, um deren Unterschiede zu verdeutlichen. Denn auch bei PL/SQL-Programmen werden die Datentypen der Oracle-Database bis auf einige Ausnahmen eingesetzt. Neben diesen elementaren Datentypen bietet PL/SQL eine Vielzahl an Möglichkeiten an. Beispielsweise kann man eigene Datentypen frei definieren. Es gibt aber noch eine Vielzahl an weiteren Datentypen, die Oracle für die Programmierung von PL/SQL-Programmen zur Verfügung stellt. Auf diese vielen Möglichkeiten geht dieses Video nicht ein, denn zunächst soll lediglich eine einfache Grundlage geschaffen werden, mit der wir unsere Programme in den nächsten Videos programmieren können. Um strukturiert vorzugehen, werde ich hierbei eine Vorgehensweise aus der Software-Analyse einsetzen, bei der man die Festlegung der Datentypen zunächst bewusst mit PROSA ausdrückt. Dies ist erforderlich, um den Software-Entwurf möglichst an dem Erfordernis der Realität anzupassen. In der Abbildung sehen Sie, dass ich eine Unterscheidung vornehme, wie sie in der Praxis häufig vorkommt. Nämlich eine Unterscheidung nach Zahlen, Texten, Zeitpunkten und sonstigen Daten, die lediglich binär transportiert werden können. Je nach Anwendungsfall hat man diese Datentypen bei der ANSI-SQL-Spezifikation weiter verfeinert. Beachten Sie, dass ich Ihnen hiervon jetzt nur die Datentypen zeigen werde, die für den jeweiligen Verwendungszweck gängig sind. Dies soll Ihnen dabei helfen, den Überblick zu behalten. Bei einer Zahl unterscheidet man normalerweise darin, ob sie Nachkommastellen benötigt. Diese Unterscheidung ist von Bedeutung, da Kommazahlen einen wesentlich größeren Speicherbedarf erfordern als Zahlen ohne Nachkommastellen. Typische Beispiele sind Geldbeträge oder andere Werte, die man bei einer Messung oder einer Berechnung benötigt. Bei SQL setzt man hierfür typischerweise den Datentypen DOUBLE ein. Ein Wahrheitswert stellt einen besonderen Datentypen dar, da er mit einem einzigen Bit abgebildet werden kann. Hierfür hatte der ANSI-SQL-92-Standard den Datentypen BIT vorgesehen. Der wurde aber mit ANSI-SQL 2003 durch den Datentypen BOOLEAN abgelöst. Wie Sie sehen, hat sich das ANSI-Gremium bei Ganzzahlen viel Mühe gemacht, die verschiedenen Größen möglichst genau dem fachlichen Erfordernis anzupassen. Denn beispielsweise haben kleinste, kurze, normale, lange oder besonders lange Ganzzahlen einen ganz unterschiedlichen Speicherbedarf. Beachten Sie auch hier wieder, dass ich bei den ANSI-SQL-Datentypen vieles vereinfacht habe. Zum Beispiel habe ich für lange Ganzzahlen den mit ANSI-SQL 2003 neu eingeführten Datentypen BIGINT statt des älteren Datentypen LONG verwendet. Dennoch zeigt die Abbildung eine ausgefeilte Zuordnung, wie sie in manchen Projekten auch tatsächlich vorgefunden werden kann. Auch die Oracle-Database bietet ähnliche Schlüsselwörter an, um dem ANSI-SQL-Standard gerecht zu werden. Allerdings handelt es sich bei der Oracle-Database um den Urvater, der als Vorreiter und Prototyp von jeher innovativ den SQL-Standard mitgestaltete. Daher darf man sich nicht wundern, dass Oracle recht selbstbestimmt ist, wenn es um Datentypen geht. Und daher ist manches gar nicht vorhanden oder hat eine abweichende Bedeutung. Beispielsweise kennt die Oracle-Database den Datentypen BOOLEAN nicht. Noch gravierender ist der Unterschied bei dem Datentypen LONG. Denn der deutet bei der ANSI-SQL ja auf eine lange Ganzzahl hin, wohingegen LONG bei der Oracle-Database für lange Zeichenketten eingesetzt wird. Der Hersteller empfiehlt mittlerweile, diesen Datentypen gar nicht zu gebrauchen. Aber auch wenn man sich für die bei Oracle gleich benannten Datentypen entscheidet, werden Zahlenfelder dennoch stets über den Oracle-eigenen Datentyp NUMBER umgesetzt. Wenn es sich bei den Daten um Text handelt, wird lediglich zwischen normalen und besonders langen Texten unterschieden. Bei der Oracle-Database nennt sich der gleiche Datentyp VARCHAR2. Ich habe die obere Grenze bei 1000 Zeichen festgelegt. Der Grund liegt darin, dass ein einzelnes UTF-8-Symbol bis zu 4 Bite groß sein kann und somit 1000 4 Bite große Zeichen die Maximalgrenze eines VARCHAR2-Datenfeldes erreichen. Die liegt nämlich bei 4000 Bite. Sollten Sie in Ihrer Anwendung also Texte abspeichern wollen, die länger als 1000 Zeichen sind, sollten Sie den Datentypen CLOB einsetzen. Apropos: Bewusst habe ich auf die Nutzung der sogenannten "National Character Sets" wie beispielsweise den Datentypen EMBARCA2 verzichtet, da es sich hierbei um eine seltene Variante handelt, die im alltäglichen Gebrauch kaum Verwendung findet. Bei Zeitpunkten unterscheidet der ANSI-SQL-Standard zwischen einem Datum, einer Uhrzeit und einem Zeitstempel. Den Datentypen TIME kennt die Oracle-Database nicht. Stattdessen setzen wir auch hierfür den Datentypen DATE ein. Denn bei der Oracle-Database beinhaltet der Datentyp DATE nicht nur das Jahr, den Monat und den Tag, sondern auch die Stunde, die Minute und die Sekunde. Das bedeutet, dass wir DATE für das Datum wie auch für Uhrzeiten verwerten können. TIMESTAMP erweitert den Datentyp DATE um die Möglichkeit der Genauigkeit. Die maximale Genauigkeit, mit der ein TIMESTAMP bei der Oracle-Database ausgestattet werden kann, entspricht 9 Stellen hinter dem Komma einer Sekunde. Aber auf einem handelsüblichen PC lässt sich diese Genauigkeit nicht darstellen, denn die liegt im Bereich von drei Stellen hinter dem Komma. Um Bilder, Videos oder andere Medien abzuspeichern, können die bislang gezeigten Datentypen nicht verwendet werden. Hierfür setzt man üblicherweise den Datentypen Binary Large Objects, also kurz BLOB, ein. Kommen wir nun zu den Datentypen, die man bei der PL/SQL-Programmierung verwendet. Auch bei PL/SQL lassen sich die Datentypen der Oracle-Database verwenden. Und außerdem unterscheiden sich die unter Oracle-SQL gezeigten Datentypen bis auf VARCHAR2 von den gleichnamigen Datentypen der Oracle-Database nicht. Daher sollte man die Datentypen, die Oracle zusätzlich anbietet, eher als Erweiterung betrachten. Schauen wir uns also an, was die Oracle-Database zusätzlich anbietet und worauf man bei dem Datentypen VARCHAR2 achten muss. PL/SQL bietet die Möglichkeit, den Datentypen BOOLEAN zu verwenden. Ein BOOLEAN kann bei PL/SQL die Werte "null", "true" oder "false" annehmen. Allerdings muss man hierbei berücksichtigen, dass man hiermit nicht die Spaltenfelder einer Datenbanktabelle befüllt. Stattdessen wird ein BOOLEAN bei der PL/SQL-Programmierung üblicherweise für ifap-Fragen eingesetzt. Ganzzahlen, die nicht größer als 32 Bit (also etwa -2,1 bis +2,1 Milliarden) sind, können mit dem PL/SQL-eigenen Datentypen PLS_INTEGER definiert werden. Der Datentyp PLS_INTEGER ist platzsparender und schneller in der Laufzeit. Darüber hinaus werden auch noch Untertypen von PLS_INTEGER wie NATURAL oder POSITIVE angeboten, bei denen beispielsweise nur positive Werte verwendet werden können. Aber auch bei den Datentypen PLS_INTEGER und seinen Untertypen sollte man bei der Speicherung eines Wertes in ein Spaltenfeld vorsichtig sein. Denn die Umwandlung zwischen PLS_INTEGER und NUMBER bietet Nährboden für Flüchtigkeitsfehler, die erst während des Betriebes auffallen. Einfacher ist es, wenn man auf PLS_INTEGER gänzlich verzichtet. Aber letztlich liegt die Verantwortung beim Entwickler. Obwohl die übrigen Datentypen genauso wie bei der Oracle-Database verwendet werden, muss an dieser Stelle noch darauf hingewiesen werden, dass eine Variable, die man bei PL/SQL mit dem Datentypen VARCHAR2 definiert, bis zu 32.767 Bites enthalten darf. Die Speicherung in ein Spaltenfeld vom Typ VARCHAR2 gelingt mit einer Zeichenkette, die mehr als 4000 Bites enthält, natürlich nicht. In diesem Video haben wir die elementaren Datentypen abgehandelt, die bei einem PL/SQL-Programm verwendet werden. Dabei haben wir die Datentypen, die der ANSI-Standard definiert, mit denen der Oracle-Database gegenübergestellt. Danach bin ich auch noch auf einige Besonderheiten eingegangen, die bei den elementaren Datentypen in einem PL/SQL-Programm von Bedeutung sind. Beachten Sie, dass PL/SQL eine Vielzahl an weiteren Möglichkeiten bietet. Beispielsweise lassen sich benutzerdefinierte Datentypen oder von vorhandenen Datentypen abgeleitete Datentypen erstellen. Darüber hinaus bietet PL/SQL eine Vielzahl an sogenannten "komplexen" Datentypen an. Wir werden uns später noch mit einigen dieser Datentypen befassen. Aber auf alle Möglichkeiten der Datentypen von PL/SQL einzugehen, würde den Rahmen dieses Trainings sprengen.

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!