Chris: MySQL: Syntaxerror beim benutzen von IF

Ich habe im Handbuch nachgeschlagen (http://dev.mysql.com/doc/refman/5.0/en/if-statement.html), aber irgendwie akzeptiert er meinen Code nicht - warum?

SELECT @rollnr:=SNr FROM Sendung WHERE RollkartenNr = 41205634;
IF (@rollnr <> NULL) THEN
  SELECT RollkartenNr FROM Sendung WHERE SNr = @rollnr;
ENDIF;

Ich weiss, dass das nicht allzu sinnvoll ist, ist auch nur zum Testen gedacht ;)

Die Fehlermeldung lautet wie folgt: #1064 - 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 'IF (@rollnr <> NULL) THEN
  SELECT RollkartenNr FROM Sendung WHERE SNr = @rolln' at line 1

  1. Hi,

    Die Fehlermeldung lautet wie folgt: #1064 - 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 'IF (@rollnr <> NULL) THEN
      SELECT RollkartenNr FROM Sendung WHERE SNr = @rolln' at line 1

    Dein Statement beinhaltet ein Semikolon. Demnach ist es nicht ein Statement sondern zwei (eher charakteristisch für eine Stored Procedure). Sowohl mit einem PHP mysql_query als auch mit Tools wie PHPMyAdmin wirst du da auf keinen Fall sehr weit kommen, inwieweit das eine direkte MySQL-Oberfläche akzieptiert ist mir gerade nicht bekannt.

    MfG
    Rouven

    --
    -------------------
    Inter Arma Enim Silent Leges  --  Cicero
    1. echo $begrüßung;

      'IF (@rollnr <> NULL) THEN

      Auf NULL testet man mit IS NULL. Alles andere dürfte nicht gehen.

      Dein Statement beinhaltet ein Semikolon. Demnach ist es nicht ein Statement sondern zwei [...]. Sowohl mit einem PHP mysql_query als auch mit Tools wie PHPMyAdmin wirst du da auf keinen Fall sehr weit kommen, inwieweit das eine direkte MySQL-Oberfläche akzieptiert ist mir gerade nicht bekannt.

      phpMyAdmin teilt normalerweise Statements am ; auf. Hier handelt es sich beim IF aber um Stored-Procedure-Befehle, die nicht außerhalb von ebendiesen verwendet werden können.

      Alternativ bieten sich vielleicht die Control Flow Functions an, die in "normalen" Statements verwendet werden können.

      echo "$verabschiedung $name";