MySQL - Something is wrong in your syntax

0

Witam,
Na studiach zacząłem nowy przedmiot - bazy danych i dostałem zadanie, aby napisać w MySQL procedurę wprowadzającą pytania do ankiet. Wydaje się proste i z poradnikami myślałem że sobie poradzę, ale przy kompitacji otrzymuję błąd: ERROR 1064 (42000): Something is wrong in your syntax obok 'SELECT NAZWA FROM ankieta where NAZWA=NazwaAnkiety);
Byłbym wdzięczny za wskazanie błędu.

BEGIN

SELECT @i;
IF EXIST (SELECT NAZWA FROM ankieta where NAZWA=NazwaAnkiety);
	SELECT @i:=ID_AN FROM ankieta WHERE NAZWA=NazwaAnkiety;
	INSERT INTO pytania (TRESC,SHORT)
    	 VALUES (TrescPytania, SkrotPytania);
	INSERT INTO an_pyt (ID_AN, ID_PYT)
    	 VALUES (@i,(SELECT MAX(ID_PYT) FROM pytania));
ELSE
	INSERT INTO ankieta (NAZWA)
    	 VALUES (NazwaAnkiety);
	INSERT INTO pytania (TRESC,SHORT)
    	 VALUES (TrescPytania, SkrotPytania);
	INSERT INTO an_pyt (ID_AN, ID_PYT)
    	 VALUES ((SELECT MAX(ID_AN) FROM ankieta),(SELECT MAX(ID_PYT) FROM pytania));
END IF


END

screenshot-20200324000131.png

2

if exists :-)

0

Najciemniej pod latarnią :) dziękuję.
Niestety po poprawieniu nadal mam ten sam błąd.

0

Wrzuć poprawiony kod.

0
BEGIN

SELECT @i;
IF EXISTS (SELECT NAZWA FROM ankieta where NAZWA=NazwaAnkiety);
    SELECT @i:=ID_AN FROM ankieta WHERE NAZWA=NazwaAnkiety;
    INSERT INTO pytania (TRESC,SHORT)
         VALUES (TrescPytania, SkrotPytania);
    INSERT INTO an_pyt (ID_AN, ID_PYT)
         VALUES (@i,(SELECT MAX(ID_PYT) FROM pytania));
ELSE
    INSERT INTO ankieta (NAZWA)
         VALUES (NazwaAnkiety);
    INSERT INTO pytania (TRESC,SHORT)
         VALUES (TrescPytania, SkrotPytania);
    INSERT INTO an_pyt (ID_AN, ID_PYT)
         VALUES ((SELECT MAX(ID_AN) FROM ankieta),(SELECT MAX(ID_PYT) FROM pytania));
END IF

END
0

Dlaczego tu:

IF EXISTS (SELECT NAZWA FROM ankieta where NAZWA=NazwaAnkiety);

... na końcu masz średnik?

0

Już nie mam :) A błąd się powtarza

BEGIN

SELECT @i;
IF EXISTS (SELECT NAZWA FROM ankieta where NAZWA=NazwaAnkiety)
    SELECT @i:=ID_AN FROM ankieta WHERE NAZWA=NazwaAnkiety;
    INSERT INTO pytania (TRESC,SHORT)
         VALUES (TrescPytania, SkrotPytania);
    INSERT INTO an_pyt (ID_AN, ID_PYT)
         VALUES (@i,(SELECT MAX(ID_PYT) FROM pytania));
ELSE
    INSERT INTO ankieta (NAZWA)
         VALUES (NazwaAnkiety);
    INSERT INTO pytania (TRESC,SHORT)
         VALUES (TrescPytania, SkrotPytania);
    INSERT INTO an_pyt (ID_AN, ID_PYT)
         VALUES ((SELECT MAX(ID_AN) FROM ankieta),(SELECT MAX(ID_PYT) FROM pytania));
END IF

END
0

Ok, to teraz dlaczego nic nie masz po nawiasie zamykającym if? Nie brakuje Ci tam jakiegoś then? :-)

0

Oki mam. Z jakiejś lewuchowej strony brałem składnię IF ELSE :/
Brakowało jeszcze cudzysłowy po: END IF.
Dzięki za pomoc. Pozdrawiam

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