Übung zu PostgreSQL

Werbung
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
Herunterladen