Rolf B: im mysqlscript feldwert abfragen

Beitrag lesen

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