im mysqlscript feldwert abfragen
bearbeitet vonHallo Henry,
Fehler 1 - wie Auge gesagt hat: Der Test auf Gleichheit gelingt mit =.
Hinweis - in C-artigen Sprachen muss eine Bedingung eingeklammert werden. SQL Kontrollbefehle sind nicht C-artig. Sie sind eher wie COBOL. Und genau deshalb gibt's
Fehler 2 - Hatten wir schon, musste ich auch nochmal nachlesen. Per Default ist es so, dass der Client, sobald er ein ; findet, alles was er hat zum Server schickt und ausführen lässt.[^1]
[^1]: Deswegen erwähnte ich COBOL - macht man dort einen Punkt, ist das Statement zu Ende. Auch mitten in einer Kontrollstruktur. Kompatibilität zum Kambrium der IT ist nun mal gruselig
In deinem Fall schickt er deshalb
~~~sql,bad
IF (SELECT stoparchiv FROM parameter) = 1
THEN
exit
~~~
und der Server beschwert sich über das fehlende END IF.
Lösung: DELIMITER - damit kannst Du das Semikolon durch ein anderes Zeichen oder sogar eine Zeichenfolge ersetzen. Das MariaDB-Handbuch schlägt // vor, aber du könntest auch "RUN" oder "SUPERCALIFRAGILISTICEXPIALIDOCIOUS" verwenden.
~~~sql,good
DELIMITER SUPERCALIFRAGILISTICEXPIALIDOCIOUS
IF ((SELECT stoparchiv FROM parameter) == 1)
THEN
EXIT;
END IF
SUPERCALIFRAGILISTICEXPIALIDOCIOUS
DELIMITER ;
~~~
Und [wie Julie Andrews schon wusste](https://www.youtube.com/watch?v=rihNRTTcztQ): damit geht alles besser 😉
_Rolf_
--
sumpsi - posui - obstruxi