sql >> Databasteknik >  >> Database Tools >> phpMyAdmin

MySQL Error 2014 - Kommandon osynkroniserade - när man försöker anropa på varandra följande lagrade processer

Jag antar att detta kan ha något att göra med hur du tilldelar dina variabler.

Mitt råd är att deklarera lokala variabler i din procedur och tilldela dem med SELECT...INTO . Detta är en bra praxis i allmänhet och kan hjälpa dig med ditt problem.

Så här skulle din procedur se ut:

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 ;


  1. Möjliga steg för att förbättra SQL Server-frågeprestanda

  2. Förhindra rader som påverkas i filexporten från SSMS

  3. Hur man VÄLJER DEFAULT-värde för ett fält

  4. Ny DBeaver-webbplats