Datenbanken - SS 2020
Prof. Dr.-Ing. Johannes Schildgen
johannes.schildgen@oth-regensburg.de
Übungsblatt 11 vom 20.01.2021

Aufgabe 1: User-Defined Functions (10P)

Abgabe-Deadline: 20.01.2021 11:00 im Moodle

  1. Entwickeln Sie in Ihrer PostgreSQL-Datenbank eine UDF namens fakultaet(INT), die eine Integer-Zahl entgegennimmt und einen Integer ausgibt: die Fakultät der übergebenen Zahl.
  2. Was ist die größte Zahl, deren Fakultät Sie mit Ihrer Funktion berechnen können?

Aufgabe 2: Stored Procedures

Entwickeln Sie in Ihrer PostgreSQL-Datenbank eine Prozedur namens kontakte_vorbereiten(anzahl INT), die eine Tabelle erstellt und diese mit Testdaten füllt.

  1. Die Prozedur soll die Tabelle kontakte droppen, falls Sie schon existiert: DROP TABLE IF EXISTS kontakte;
  2. Nun soll die Prozedur die kontakte-Tabelle anlegen. Die Spalten sind wie im letzten Übungsblatt name VARCHAR(200) PRIMARY KEY, handynummer VARCHAR(20), gesucht INT NOT NULL DEFAULT 0.
  3. Der Parameterwert, der der Prozedur übergeben wird, bestimmt die Anzahl der Zeilen, die eingefügt werden. Erzeugen Sie entsprechend viele Dummy-Datensätze, z. B. ('Peter1', '0151-1'), ('Peter2', '0151-2'), usw.
  4. Wenn eine negative Zahl übergeben wird, soll die Prozedur eine Exception "Ungültige Anzahl" werfen.
  5. Rufen Sie die Prozedur auf, um hunderttausend Kontakte zu generieren.

Hinweis: Die in einer For-Schleife FOR _variablenname IN _von .. _bis LOOP ... END LOOP; verwendeten Variablen müssen Sie in der DECLARE-Section definieren (oder sie sind Parameter).