To je to omezení.
Nyní řešení:přidejte vnořený BEGIN ... END
blokovat.
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 $$
Všechny proměnné ve vnějším bloku jsou stále v rozsahu ve vnitřním bloku, pokud jiná proměnná ve vnitřním bloku nemá konfliktní název.
OBSLUHAČ
ve vnějším bloku je také v rozsahu pro signály ve vnitřním bloku, pokud tam není deklarován konfliktní handler, v takovém případě vnitřní handler zachytí výjimku a vnější handle zachytí vše, co vnitřní handler hodí, včetně
Je povoleno více úrovní vnoření. Velikost thread_stack
může to být faktor, ale dokumentace je nejasná. Spouštěl jsem 262 144 bajtové zásobníky vláken od doby, než to bylo nastaveno jako výchozí, a nikdy jsem nenarazil na limit.