phpMyAdmin
 sql >> Datenbank >  >> Database Tools >> phpMyAdmin

MySQL-Fehler 2014 – Befehle nicht synchron – beim Versuch, aufeinanderfolgende gespeicherte Prozesse aufzurufen

Ich vermute, dass dies etwas damit zu tun haben könnte, wie Sie Ihre Variablen zuweisen.

Mein Rat ist, lokale Variablen innerhalb Ihrer Prozedur zu deklarieren und sie mit SELECT...INTO zuzuweisen . Dies ist im Allgemeinen eine gute Vorgehensweise und kann Ihnen bei Ihrem Problem helfen.

So würde Ihr Verfahren aussehen:

DELIMITER $$

DROP PROCEDURE IF EXISTS deleteOrg $$

CREATE PROCEDURE deleteOrg(IN IN_ID INT)

MODIFIES SQL DATA

BEGIN 
  DECLARE V_ORG_ID INT;
  DECLARE V_MY_LEFT INT;
  DECLARE V_MY_RIGHT INT;
  DECLARE V_MY_WIDTH INT;

    START TRANSACTION;

    SELECT id, 
           lft, 
           rgt, 
           rgt - lft + 1
      into V_ORG_ID, 
           V_MY_LEFT, 
           V_MY_RIGHT,  
           V_MY_WIDTH
      FROM organization 
     WHERE id = IN_ID;

    -- delete statements for removing roles and other dependencies

    DELETE FROM organization 
     WHERE id = V_ORG_ID;

    UPDATE organization 
       SET rgt = rgt - V_MY_WIDTH 
     WHERE rgt > V_MY_RIGHT;

    UPDATE organization 
       SET lft = lft - V_MY_WIDTH 
     WHERE lft > V_MY_LEFT;

COMMIT;

END;
$$

DELIMITER ;