Det er begrænsningen.
Nu, løsningen:tilføj en indlejret BEGIN ... END
blokere.
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 $$
Alle variabler i den ydre blok er stadig i omfanget i den indre blok, medmindre en anden variabel i den indre blok har et modstridende navn.
En HANDLER
i den ydre blok er der også mulighed for signaler i den indre blok, medmindre en modstridende handler er erklæret der, i hvilket tilfælde den indre handler vil fange undtagelsen, og det ydre håndtag vil fange alt, hvad der kastes af den indre handler, inklusive en RESIGNAL
.
Flere redeniveauer er tilladt. Størrelsen på thread_stack
kan være en faktor, men dokumentationen er uklar. Jeg har kørt 262.144 byte trådstakke siden før det blev standard, og jeg har aldrig stødt på en grænse.