Antwort an „Rolf B“ verfassen

Hallo Henry,

Fehler 1 - wie Auge gesagt hat: Der Test auf Gleichheit gelingt mit =. Das == gehört nach C, PHP oder JavaScript. SQL ist kein C-oid.

Hinweis 1 - Hat die Parameter-Tabele genau eine Zeile? Andernfalls gibt's einen Fehler 1242 - Subquery returns more than 1 row.

Hinweis 2 - in C-oiden Sprachen muss eine Bedingung eingeklammert werden. SQL Kontrollbefehle sind nicht C-oid. 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]

In deinem Fall schickt er deshalb

	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.

DELIMITER SUPERCALIFRAGILISTICEXPIALIDOCIOUS

IF ((SELECT stoparchiv FROM parameter) == 1)
THEN
  EXIT;
END IF

SUPERCALIFRAGILISTICEXPIALIDOCIOUS

DELIMITER ;

Und wie Julie Andrews schon wusste: damit geht alles besser 😉

Rolf

--
sumpsi - posui - obstruxi

  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 ↩︎

freiwillig, öffentlich sichtbar
freiwillig, öffentlich sichtbar
freiwillig, öffentlich sichtbar

Ihre Identität in einem Cookie zu speichern erlaubt es Ihnen, Ihre Beiträge zu editieren. Außerdem müssen Sie dann bei neuen Beiträgen nicht mehr die Felder Name, E-Mail und Homepage ausfüllen.

abbrechen