funkcja w psql

0

Witam.
Mam pewien problem do rozwiązania, więc zwracam się do Was. Byłbym wdzięczny za pomoc.
Stworzyłem bazę danych (wypożyczalnia). Potrzebuję funkcję, która w przypadku nieoddania rzeczy po dwóch tygodniach naliczy 10zł kary za każdy dzień spóźnienia. Dopiero się uczę i nie bardzo wiem, jakie warunki założyć.
Mógłby mi ktoś napisać tę funkcję? Dzięki wielkie!

0

Przede wszystkim najlepiej podaj część struktury bazy ( jak wyglądają tabele, które chcesz wykorzystać ). I potem zacznij od tego: http://www.codeproject.com/Articles/33734/How-to-write-PL-pgSQL-functions-for-PostgreSQL-8-3 . CodeProject to ogromne źródło przykładów i wiedzy. Nie jednemu programiście na pewno wiele razy uratowało tyłek.

Pozdrawiam

0

W międzyczasie zrobiłem coś takiego. W dobrym kierunku idę? Może mi to ktoś zweryfikować i poprawić ewentualnie? Średnio mi to wychodzi...Dzięki.

CREATE FUNCTION OplataZaZwloke(INT) RETURNS INT 
LANGUAGE plpgsql 
AS 
 
DECLARE 
OplataZaZwloke INT; 
BEGIN 
SELECT Wypozyczenie.DataWypozyczenia, (DATE()-(DataWypozyczenia+14))*10 AS OplataZaZwloke
FROM Wypozyczenie 
WHERE Wypozyczenie.kto_wypozyczyl = $1;  
RETURN OplataZaZwloke; 
END; 
';	 
0

Czyli najpierw stworzyć funkcję, a potem triggera odwołującego do tej funkcji? Czytam o tych triggerach, nie mam pojęcia, jak to zrobić. :( Wiem, że to bezczelne, ale nie znalazłby się chętny do napisania mi tego? Sam chyba tego nie ogarnę...Dzięki wielkie!

0

Hm, coś takiego? :)

 CREATE FUNCTION OplataZaZwloke(INT) RETURNS INT 
AS 
$BODY$ 
DECLARE 
wyliczona INT; 
BEGIN 
SELECT (DATE()-(DataWypozyczenia+14))*10 
INTO wyliczona
FROM Wypozyczenie 
WHERE Wypozyczenie.kto_wypozyczyl = $1;  
RETURN wyliczona; 
END;
$BODY$
LANGUAGE plpgsql 
COST 10;

1 użytkowników online, w tym zalogowanych: 0, gości: 1