sql >> Databasteknik >  >> RDS >> Mysql

Får två problem när du använder lagrad procedur i MySQL

Det är begränsningen.

Nu, lösningen:lägg till en kapslad BEGIN ... END blockera.

DELIMITER $$
CREATE PROCEDURE ...
BEGIN
  DECLARE ... INT ... -- variable
  CREATE TEMPORARY TABLE... -- following the declarations, no more declarations allowed, unless...
  BEGIN -- resets the scope, changes the rules, allows more declarations
    DECLARE ... INT ... -- variables
    DECLARE ... CURSOR ...
    DECLARE CONTINUE HANDLER ...
    OPEN ...
    ...
  END;
END $$

Alla variabler i det yttre blocket är fortfarande inom omfånget i det inre blocket, såvida inte en annan variabel i det inre blocket har ett namn i konflikt.

En HANDLER i det yttre blocket finns också utrymme för signaler i det inre blocket, om inte en motstridig hanterare deklareras där, i vilket fall den inre hanteraren kommer att fånga undantaget och det yttre handtaget kommer att fånga allt som kastas av den inre hanteraren, inklusive en RESIGNAL .

Flera häckningsnivåer är tillåtna. Storleken på thread_stack kan vara en faktor, men dokumentationen är otydlig. Jag har kört 262 144 byte trådstackar sedan innan det blev standard och har aldrig stött på en gräns.



  1. Ladda upp flera filer i PHP &INFOGA sökväg till MySQL

  2. Har du oväntat träffat PHP-minnesgränsen med en enda PDO-fråga?

  3. ImportError:Ingen modul med namnet flask.ext.mysql

  4. WordPress beställ inlägg efter 2 anpassade fält samtidigt