Datenbankprogrammierung (Oracle)

Werbung
Universität Augsburg, Institut für Informatik
Prof. Dr. W. Kießling
Dr. A. Huhn, M. Endres
WS 2009/2010
11. Dez. 2009
Übungsblatt 8
Datenbankprogrammierung (Oracle)
Aufgabe 1: Objekte in Oracle
Gegeben seien die folgenden Objekt-Typen:
• keyword(code, title, researcharea)
• publication(code, title, publisher, keywords)
Das Attribut keywords der Relation publication enthält eine Liste von Objekten vom Typ keyword.
Eine solche Liste müssen sie dazu zunächst als ARRAY(<Kapazität>) oder als TABLE-Datentyp
– analog zu OBJECT-Typen – erstellen.
Bearbeiten Sie folgende Aufgaben:
a) Finden Sie heraus, welche Unterschiede zwischen ARRAY() und TABLE bestehen. Lösen Sie
die folgenden Aufgaben jeweils mit einer Implementierung als ARRAY() und als TABLE.
b) Legen Sie mindestens zwei Publikationen (eine davon ohne Keywords) an.
c) Geben Sie alle Publikationen mit den zugehörigen Keywords aus. Geben Sie auch die Publikationen aus, für die keine Keywords vorhanden sind.
d) Geben Sie alle Publikationen ohne zugehörige Keywords aus.
e) Lesen Sie die vorhandenen Publikationen per JDBC und geben Sie sie auf der Kommandozeile
aus. Benutzen Sie JDBC-Typen wie java.sql.Struct und java.sql.Array für die
zurückgelieferten Typen.
Aufgabe 2: Stored Function
Schreiben Sie eine Stored Function getProperty(name VARCHAR2). Bei der Übergabe verschiedener Werte sollen unterschiedliche Eigenschaftswerte zurückgeliefert werden:
SCHEMA
SERVER
USER
DATE
Name des akuellen DB-Schemas
IP-Adresse des Servers
Name des aktuellen Benutzers
formatiertes Datum (Beispiel: 11.12.2009)
Alle notwendigen Werte erhalten Sie vom Datenbanksystem.
Aufgabe 3: Stored Procedure
In dieser Aufgabe soll mit Hilfe einer Stored Procedure ein Primzahl-Test in PL/SQL implementiert werden.
Gehen Sie wie folgt vor:
a) Schreiben Sie zunächst eine Stored Function isPrime, die für eine Zahl zurückgibt, ob es sich
um eine Primzahl handelt.
b) Schreiben Sie eine Stored Procedure mit der Signatur
printPrimes(low INTEGER, up INTEGER)
zur Ausgabe aller Primzahlen zwischen low und up.
c) Bei unsinnigen Eingaben (negative Werte, low > up), sollen entsprechende, von Ihnen definierte Fehler geworfen werden.
d) Die Stored Procedure soll im Paket PRIME angelegt werden, das als einzige öffentlich bekannte
Methode printPrimes enthält.
Aufgabe 4: PL/SQL und BLOBs
Wie Sie bereits in der Vorlesung zu Datenbanksysteme I kennengelernt haben kann mit Hilfe von
Java und JDBC der Datentyp BLOB verarbeitet werden. In dieser Aufgabe sollen Sie nun BLOBs
mit PL/SQL in die Datenbank schreiben. Bearbeiten Sie folgende Aufgaben:
a) Schlagen Sie im Skript zu Datenbanksystem I Informationen über BLOBs nach.
b) Erstellen Sie eine Relation PDFs mit den Attributen ID und PDF (vom Datentyp BLOB).
c) Beachten Sie, dass vor der Verwendung des BLOBs ein Eintrag stattfinden muss, bei dem das
BLOB leer bleibt (Leer, aber nicht NULL). Verwenden Sie dazu EMPTY_BLOB().
d) BLOBs können nicht direkt vom Dateisystem in die Datenbank geschrieben werden. Es muss
zuerst ein Oracle DIRECTORY angelegt werden, welches auf den Pfad im Dateisystem zeigt,
wo sich das zu ladende PDF befindet. Erstellen Sie dieses Oracle DIRECTORY. Als Verzeichnis
verwenden Sie ’/tmp/’.
e) Schreiben Sie PL/SQL Anweisungen, die das PDF (CreditPoints.pdf) in Ihre Relation lädt.
In PL/SQL müssen Sie das PDF als BFILE öffnen und in den BLOB der Relation kopieren. Entsprechende Informationen dazu finden Sie im Skript zu Datenbanksysteme I und unter
DBMS LOB in der Oracle Referenz. Verwenden Sie ein geegnetes Exception-Handling.
f) BLOBs können natürlich nicht auf der Konsole angezeigt werden. Geben Sie deshalb mit Hilfe
einer SQL-Anweisung die Größe des BLOBs aus, welche der PDF-Größe entsprechen sollte.
g) Wenn Sie wissen möchten, welchen äußerst interessanten Inhalt das PDF enthält, dann finden
Sie eine Möglichkeit dieses anzuzeigen.
Herunterladen