sql >> Database teknologi >  >> Database Tools >> phpMyAdmin

MySQL Error 2014 - Kommandoer ude af synkronisering - når du forsøger at kalde på hinanden følgende lagrede procs

Jeg gætter på, at dette kan have noget at gøre med den måde, du tildeler dine variabler på.

Mit råd er at erklære lokale variabler i din procedure og tildele dem ved hjælp af SELECT...INTO . Dette er generelt en god praksis og kan hjælpe dig med dit problem.

Sådan ser din procedure ud:

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. sql kører hurtigt i ssms langsomt i asp.net

  2. Automatisk forøgelse af overspringsnumre?

  3. Kan ikke logge på serveren i SQL Server 2008 R2 Management Studio

  4. SQL Server-skabeloner - Hvordan undslipper jeg den mindre end karakter?