Advertisement
majczel23000

[PBD] Zestaw 2A

Jun 14th, 2018
139
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MySQL 2.02 KB | None | 0 0
  1. Utwórz procedurę tworzącą wypożyczenie.
  2. Dane: pID_CZYTELNIKA, pISBN
  3. Wynik: jeśli:
  4. • czytelnik o podanym pID_CZYTELNIKA nie przekroczył limitu 3 wypożyczeń oraz
  5. • ksiązka o podanym pISBN istnieje i
  6. • dostępny do wypożyczenia jest co najmniej jeden egzemplarz w/w książki
  7. to:
  8. • wypożyczenie dostęnego egzemplarza w/w książki w/w czytelnikowi jest zapisywane (z
  9. bieżącą datą) i
  10. • zmianie ulega status w/w egzemplarza,
  11. w pozostałych przypadkach wyświetlane są odpowiednie komunikaty (przekroczony limit, brak
  12. książki, brak wolnego egzemplarza).
  13.  
  14.  
  15.  
  16.  
  17. BEGIN
  18.     SET @ksiazkaIstnieje = (SELECT ISBN FROM KSIAZKA WHERE ISBN = pISBN);
  19.     SET @czytelnikIstnieje = (SELECT ID_CZYTELNIKA FROM CZYTELNIK WHERE ID_CZYTELNIKA = pID_CZYTELNIKA);
  20.     SET @iloscDostepnych = (SELECT COUNT(ISBN) FROM EGZEMPLARZ WHERE ISBN = pISBN AND STATUS = 'DOSTEPNY' GROUP BY ISBN);
  21.     SET @iloscWypozyczen = (SELECT COUNT(ID_CZYTELNIKA) FROM WYPOZYCZENIE WHERE ID_CZYTELNIKA = pID_CZYTELNIKA GROUP BY ID_CZYTELNIKA);
  22.     if(@czytelnikIstnieje IS NOT NULL) THEN
  23.     BEGIN
  24.         IF(@ksiazkaIstnieje IS NOT NULL) THEN
  25.         BEGIN
  26.             IF(@iloscWypozyczen < 3 OR @iloscWypozyczen IS NULL) THEN
  27.             BEGIN
  28.                 IF(@iloscDostepnych >= 1 AND @iloscDostepnych IS NOT NULL) THEN
  29.                 BEGIN
  30.                     SET @EGZ = (SELECT NR_EGZEMPLARZE FROM EGZEMPLARZ WHERE ISBN = pISBN AND STATUS = 'DOSTEPNY' LIMIT 1);
  31.                     INSERT INTO WYPOZYCZENIE(NR_EGZEMPLARZA, ID_CZYTELNIKA, DATA) VALUES(@EGZ, pID_CZYTELNIKA, CURRENT_DATE());
  32.                     UPDATE EGZEMPLARZ SET STATUS = 'WYPOZYCZONY' WHERE NR_EGZEMPLARZE = @EGZ;
  33.                 END;
  34.                 ELSE SELECT "Brak dostepnych egzemplarzy do wypozyczenia" AS Error;
  35.                 END IF;
  36.             END;
  37.             ELSE SELECT "Ten czytelnik ma już 3 wypozyczenia" AS Error;
  38.             END IF;
  39.         END;
  40.         ELSE SELECT "Ksiazka o podanym ISBN nie istnieje" AS Error;
  41.         END IF;
  42.     END;
  43.     ELSE SELECT "Taki czytelnik nie istnieje" AS Error;
  44.     END IF;
  45. END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement