Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Błąd w procedurze
ryuzaki
post 29.05.2011, 12:46:14
Post #1





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 29.05.2011

Ostrzeżenie: (0%)
-----


Witam, tworzę bazę danych zawierającą informacje o programie studiów na mojej uczelni i pojawił się problem z pewną procedurą, której kod zamieszczam poniżej:
  1. DELIMITER //
  2. CREATE PROCEDURE ZamienPrzedmiotObowiazkowy (IN NrIndeksu_in INT, IN IdPzedmiotuOb_in INT, IN IdPrzedmiotu2_in INT, IN DataDecyzji_in DATE)
  3. LANGUAGE SQL
  4. DETERMINISTIC
  5. SQL SECURITY DEFINER
  6. BEGIN
  7. CREATE TABLE LOG_BLEDOW (Nr INT AUTO_INCREMENT PRIMARY KEY, OpisBledu TEXT);
  8.  
  9. IF NOT EXISTS (SELECT * FROM STUDENCI WHERE NrIndeksu=NrIndeksu_in) THEN
  10. INSERT INTO LOG_BLEDOW (OpisBledu) VALUES ('Nie ma studenta o podanym numerze indeksu');
  11. END IF;
  12.  
  13. IF NOT EXISTS (SELECT * FROM PRZEDMIOTY WHERE IdPrzedmiotu=IdPrzedmiotuOb_in AND Grupa='Obowiazkowy') THEN
  14. INSERT INTO LOG_BLEDOW (OpisBledu) VALUES ('Nie istnieje przedmiot obowiazkowy o podanym identyfikatorze');
  15.  
  16. ELSE IF EXISTS (SELECT * FROM PRZEDMIOTY_ZEWNETRZNE JAKO_OBOWIAZKOWE WHERE NrIndeksu=NrIndeksu_in AND IdPrzedmiotuOb=IdPrzedmiotu_in) THEN
  17. INSERT INTO LOG_BLEDOW (OpisBledu) VALUES ('Ten przedmiot obowiazkowy zostal juz zamieniony na przedmiot zewnetrzny');
  18.  
  19. ELSE IF EXISTS (SELECT * FROM ZAMIANY_PRZEDMIOTOW_OBOWIAZKOWYCH WHERE NrIndeksu=NrIndeksu_in AND IdPrzedmiotuOb=IdPrzedmiotuOb_in) THEN
  20. INSERT INTO LOG_BLEDOW (OpisBledu) VALUES ('Zamiana tego przedmiotu obowiazkowego zostala juz zdefiniowana.');
  21.  
  22. ELSE IF EXISTS (SELECT * FROM OCENY WHERE NrIndeksu=NrIndeksu_in AND IdPrzedmiotuOb=IdPrzedmiotuOb_in) THEN
  23. INSERT INTO LOG_BLEDOW (OpisBledu) VALUES ('Ten przedmiot obowiazkowy zostal juz zaliczony, wiec nie moze zostac zamieniony');
  24.  
  25. ELSE IF NOT EXISTS (SELECT * FROM PRZEDMIOTY WHERE IdPrzedmiotu=IdPrzedmiotuOb_in AND Grupa='Obowiazkowy' AND CzyAktywny=TRUE) THEN
  26. INSERT INTO LOG_BLEDOW (OpisBledu) VALUES ('Podany przedmiot obowiazkowy nie jest aktywny');
  27. END IF;
  28.  
  29. IF NOT EXISTS (SELECT * FROM PRZEDMIOTY WHERE IdPrzedmiotu=IdPrzedmiotu2_in AND (Grupa='II stopien' OR Grupa='Dodatkowy')) THEN
  30. INSERT INTO LOG_BLEDOW (OpisBledu) VALUES ('Nie istnieje przedmiot ze studiow II stopnia ani dodatkowy o podanym identyfikatorze');
  31. ELSE IF EXISTS (SELECT * FROM OCENY WHERE NrIndeksu=NrIndeksu_in AND IdPrzedmiotu=IdPrzedmiotu2_in) THEN
  32. INSERT INTO LOG_BLEDOW (OpisBledu) VALUES ('Przedmiot ten ten zostal juz zaliczony, wiec nie moze posluzyc do zamiany');
  33. ELSE IF (EXISTS (SELECT * FROM ZAMIANY_PRZEDMIOTOW_OBOWIAZKOWYCH WHERE NrIndeksu=NrIndeksu_in AND IdPrzedmiotu2=IdPrzedmiotu2_in)) OR (EXISTS (SELECT * FROM ZAMIANY_PRZEDMIOTOW_ABCGPS WHERE NrIndeksu=NrIndeksu_in AND IdPrzedmiotu=IdPrzedmiotu_in)) THEN
  34. INSERT INTO LOG_BLEDOW (OpisBledu) VALUES ('Ten przedmiot ze studiow II stopnia lub dodatkowy zostal juz uwzgledniony w innej zamianie');
  35. ELSE IF ( EXISTS ( SELECT * FROM PRZEDMIOTY WHERE IdPrzedmiotu=IdPrzedmiotuOb_in AND Grupa='II stopien')) AND (EXISTS (SELECT * FROM PRZEDMIOTY_Z_II_STOPNIA_JAKO_DODATKOWE WHERE NrIndeksu=NrIndeksu_in AND IdPrzedmiotu2st=IdPrzedmiotu2_in)) THEN
  36. INSERT INTO LOG_BLEDOW (OpisBledu) VALUES ('Podany przedmiot ze studiow II stopnia jest obecnie zaliczany jako dodatkowy');
  37. ELSE IF NOT EXISTS (SELECT * FROM PRZEDMIOTY WHERE IdPrzedmiotu=IdPrzedmiotu2_in AND (Grupa='II stopien' OR Grupa='Dodatkowy') AND CzyAktywny=TRUE) THEN
  38. INSERT INTO LOG_BLEDOW (OpisBledu) VALUES ('Podany przedmiot ze studiow II stopnia lub dodatkowy nie jest aktywny');
  39. END IF;
  40.  
  41. IF EXISTS (SELECT * FROM LOG_BLEDOW) THEN SELECT * FROM LOG_BLEDOW;
  42. ELSE
  43. BEGIN
  44. INSERT INTO ZAMIANY_PRZEDMIOTOW_OBOWIAZKOWYCH VALUES (NrIndeksu_in, IdPrzedmiotuOb_in, IdPrzedmiotu2_in, DataDecyzji_in);
  45. SELECT 'Zamiana przedmiotow zostala zapisana' AS Info;
  46. DROP TABLE LOG_BLEDOW;
  47. END;
  48. END IF;
  49. END//


Problemem jest błąd, który otrzymuję przy wczytywaniu z pliku tej procedury o treści:
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 47.

Będę bardzo wdzięczny za jakąkolwiek pomoc.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 25.07.2025 - 09:43