それが制限です。
ここで、回避策:ネストされた BEGIN ... END
を追加します ブロックします。
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 $$
内側のブロックの別の変数の名前が競合しない限り、外側のブロックのすべての変数は、内側のブロックのスコープ内にあります。
HANDLER
競合するハンドラーがそこで宣言されていない限り、外部ブロックのシグナルも内部ブロックのスコープに含まれます。宣言されている場合、内部ハンドラーは例外をキャッチし、外部ハンドルは<コードを含む内部ハンドラーによってスローされたものをすべてキャッチします。> RESIGNAL 。
複数のネストレベルが許可されます。 thread_stack<のサイズ/ code>
要因かもしれませんが、ドキュメントは不明確です。デフォルトになる前から262,144バイトのスレッドスタックを実行していて、制限に遭遇したことはありません。