যদি BEGIN/END ব্লকের ভেতরে ভেরিয়েবল ডিক্লেয়ার করা হয়, তবে তার স্কোপ শুধু সেই ব্লকের মধ্যে সীমাবদ্ধ। একই নামে অন্য BEGIN/END ব্লকে ভেরিয়েবল ডিক্লেয়ার করা যাবে কিন্তু তার স্কোপ তার নিজের ব্লকে থাকবে। উদাহরণ:
উদাহরণ
mysql> Create Procedure Scope_variables()
-> BEGIN
-> DECLARE A Varchar(5) Default 'outer';
-> BEGIN
-> DECLARE A Varchar(5) Default 'inner';
-> SELECT A;
-> END;
-> SELECT A;
-> END;
-> //
Query OK, 0 rows affected (0.08 sec)
উপরের প্রোসিডিউরতে একই নামে দুটি ভেরিয়েবল A রয়েছে। ইনার ভেরিয়েবল প্রাধান্য পায় যতক্ষণ তার স্কোপে থাকে। প্রথম END পাওয়ায় ইনার ভেরিয়েবল 'OUT OF SCOPE' হয়ে যায়। প্রোসিডিউরটি আহ্বান করলে:
mysql> CALL Scope_variables(); +-------+ | A | +-------+ | inner | +-------+ 1 row in set (0.00 sec) +-------+ | A | +-------+ | outer | +-------+ 1 row in set (0.00 sec) Query OK, 0 rows affected (0.01 sec)