PostgreSQL 19. Oktober 2010 E3A Übung zu PostgreSQL Verwende die Datenbank aus den letzten Stunden (bestellungen oder so). 1. Schreibe eine Funktion, die von den Kunden, die ausschließlich den Adresstyp 1 in Tabelle adresse aufweisen, den Vornamen, Namen und Firma auflistet. Kunden, die beide Adresstypen gespeichert haben, werden nicht ausgegeben. Das Programm liefert 4 Zeilen als Ergebnis. 2. Schreibe eine Funktion, die die Tabelle adresse komplett ausgibt. Als Parameter soll ein Landescode (A, D, CH ) mit angegeben werden. bestellungen=# select f_landescode('A'); f_landescode -------------------------------------------------------------(103,1," "," ","Beta Design","Tirolerstr 3",6421,Tirol,"A ") (110,2,Bieber,Peter," ","Untermarkt 2",6410,Tirol,"A ") (2 Zeilen) 3. Schreibe eine Funktion, die Werte in die Tabelle status einträgt. Rückgabewert ist keiner erforderlich. 4. Schreibe eine Funktion, die die Bestellungen zwischen den Jahren, die als Parameter angegeben werden, ausgibt (hier im Beispiel zwischen 2007 und 2008). Beachte, dass das bestelldatum als timestamp vorliegt, die Ausgabe aber so wie unten angegeben formatiert sein soll. Hier gibt es Hilfge dazu: http://www.postgresql.org/docs/8.4/interactive/functions-formatting.html bestellungen=# select * from f_best(2007, 2008); bestellungen=# select * from f_best(2005, 2008); bestellnr | kundennummer | bestelldatum -----------+--------------+-------------1001 | 100 | 03.03.2007 1002 | 101 | 04.04.2007 1003 | 101 | 04.05.2007 1004 | 102 | 07.07.2007 1005 | 102 | 07.07.2008 1006 | 104 | 10.07.2008 1007 | 104 | 15.07.2008 1008 | 105 | 20.08.2007 1009 | 105 | 25.08.2007 1010 | 107 | 10.10.2008 1011 | 108 | 10.11.2008 (11 Zeilen) 1 PostgreSQL 19. Oktober 2010 E3A Lösungen 1. Beispiel bestellungen=# create function f_namen3 (out name character, out vorname character, out firma character) returns setof record as $$ select name, vorname, firma from adresse where kundennr not in (select kundennr from adresse where adressid = 2); $$language sql; 2. Beispiel bestellungen=# create function f_landescode(in text) returns setof adresse as $$ select * from adresse where landescode = $1; $$ language sql; 3. Beispiel bestellungen=# create function f_insstatus (in text, in text) returns void as $$ insert into status values($1, $2); $$ language sql; 4. Beispiel bestellungen=# create or replace function f_best (in int, in int,out bestellnr int, out kundennummer int, out bestelldatum text ) returns setof record as $$ select bestellnr, kundennr, to_char(bestelldatum,'DD.MM.YYYY') from bestellung where extract(year from bestelldatum) between $1 and $2; $$ language sql; 2