Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: funkcja psql
Forum PHP.pl > Forum > Bazy danych > PostgreSQL
kichawa93
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!
mmmmmmm
Na samej bazie się da.
Musiałbyś doinstalować pgAgenta (joby). Wtedy się w miarę da.
Ale i tak podałeś za mało danych.... (tabele, pola)
A i tak najważniejsza jest logika zastosowana do obliczeń... Np. czy codziennie ma naliczać karę (za dzień zwłoki), czy ma naliczć karę w momencie oddania (dopiero wtedy znamy zwłokę). W tym przypadku pgAgent nie jest potrzebny - wystarczy trigger.
kichawa93
Wydaje mi się, że to ma być na triggerach. W bazie mam tabele klient, kto_wypozyczyl, co_wypozyczyl, plyta. Zrobiłem coś takiego, tyle, że to chyba za mało...

SELECT Wypozyczenia.DataWypozyczenia, (DATE()-(DataWypozyczenia+14))*10 AS OplataZaZwloke
FROM Wypozyczenia;
mmmmmmm
Zdecydowanie za mało...
Jeśli DataWypozyczenia='2013-04-11' to OplataZaZwloke wychodzi ujemna... Doplacasz do interesu?
kichawa93

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.


  1. CREATE FUNCTION OplataZaZwloke(INT) RETURNS INT
  2. LANGUAGE plpgsql
  3. AS
  4.  
  5. DECLARE
  6. OplataZaZwloke INT;
  7. BEGIN
  8. SELECT Wypozyczenie.DataWypozyczenia, (DATE()-(DataWypozyczenia+14))*10 AS OplataZaZwloke
  9. FROM Wypozyczenie
  10. WHERE Wypozyczenie.kto_wypozyczyl = $1;
  11. RETURN OplataZaZwloke;
  12. END;
  13. ';
mmmmmmm
  1. CREATE FUNCTION OplataZaZwloke(INT) RETURNS INT
  2. AS
  3. $BODY$
  4. DECLARE
  5. wyliczona INT;
  6. BEGIN
  7. SELECT (DATE()-(DataWypozyczenia+14))*10
  8. INTO wyliczona
  9. FROM Wypozyczenie
  10. WHERE Wypozyczenie.kto_wypozyczyl = $1;
  11. RETURN wyliczona;
  12. END;
  13. $BODY$
  14. LANGUAGE plpgsql
  15. COST 10;
kichawa93
O, to już gotowiec? Dzięki wielkie! smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2024 Invision Power Services, Inc.