यही प्रतिबंध है।
अब, समाधान:नेस्टेड जोड़ें 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 $$
बाहरी ब्लॉक में सभी चर अभी भी आंतरिक ब्लॉक में दायरे में हैं, जब तक कि आंतरिक ब्लॉक में किसी अन्य चर का परस्पर विरोधी नाम न हो।
एक हैंडलर
बाहरी ब्लॉक में भी आंतरिक ब्लॉक में संकेतों के दायरे में है, जब तक कि एक परस्पर विरोधी हैंडलर घोषित नहीं किया जाता है, उस स्थिति में आंतरिक हैंडलर अपवाद को पकड़ लेगा और बाहरी हैंडल आंतरिक हैंडलर द्वारा फेंके गए किसी भी चीज को पकड़ लेगा, जिसमें एक <कोड भी शामिल है।>रेजिग्नल ।
एकाधिक घोंसले के शिकार स्तरों की अनुमति है। thread_stack<का आकार /कोड>
एक कारक हो सकता है, लेकिन दस्तावेज़ीकरण अस्पष्ट है। मैं 262,144 बाइट थ्रेड स्टैक चला रहा हूं, क्योंकि इसे डिफ़ॉल्ट बनाने से पहले, और कभी भी एक सीमा का सामना नहीं किया है।