12 Stimmen

MySQL: IF / THEN-Anweisungen in gespeicherten Prozeduren

Ich schreibe eine gespeicherte Prozedur, die mehrere IF / THEN-Anweisungen verwendet, die auch mehrere Abfragen ausführen müssen, wenn sie zu wahr auswerten. Das Problem ist, dass ich keine Beispiele für die entsprechende Syntax finden kann. In der MySQL-Entwicklungshandbuch Es scheint, als ob ich mehrere Abfragen in der "statement_list" haben könnte, aber bis jetzt kann ich es nicht zum Laufen bringen.

Ich versuche Folgendes zu tun:

SET agency = 
  COALESCE((SELECT org_agency_o_id 
            FROM orgs_agencies 
            WHERE org_agency_code = maj_agency_cat)
              ,(SELECT min(org_id) 
                FROM orgs     
                WHERE org_name LIKE CONCAT('U.S.',SUBSTRING(maj_agency_cat,5)))) 

IF agency IS NULL THEN 
  -- execute multiple queries   
  INSERT INTO orgs (org_name
                   ,org_name_length
                   ,org_type
                   ,org_sub_types) 
  VALUES (CONCAT('U.S. ',SUBSTRING(maj_agency_cat,5))
         ,LENGTH(CONCAT('U.S. ',SUBSTRING(maj_agency_cat,5)))
         ,'org','Org,GovernmentEntity,Federal,Agency');

SET agency = LAST_INSERT_ID();
END IF;

Der Fehler:

Sie haben einen Fehler in Ihrer SQL-Syntax. Schauen Sie im Handbuch zu Ihrer MySQL-Server-Version nach, um die richtige Syntax zu finden, die Sie bei 'IF agency IS NULL THEN INSERT INTO orgs (org_name,org_name_length,org_type,' in Zeile 53

Irgendwelche Ideen? Ich weiß, dass es etwas Einfaches sein muss, daher wäre ich für jeden Beitrag sehr dankbar.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X