สมมติว่าหากเราประกาศตัวแปรภายในบล็อก BEGIN/END ขอบเขตของตัวแปรนี้จะอยู่ในบล็อกเฉพาะนั้น เรายังสามารถประกาศตัวแปรด้วยชื่อเดียวกันภายในบล็อก BEGIN/END อีกบล็อกหนึ่งซึ่งจะถูกต้องตามกฎแต่วงเขตจะอยู่ภายในบล็อก BEGIN/END ของมัน สามารถเข้าใจได้จากตัวอย่างต่อไปนี้ ซึ่งเราสร้าง Procedure เพื่อแสดงขอบเขตของตัวแปร:
ตัวอย่าง
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)
ใน Procedure ข้างต้น เรามีตัวแปร 2 ตัวที่มีชื่อเดียวกันคือ A ที่นี่ การประกาศตัวแปรภายในมีลำดับความสำคัญสูงกว่าตราบใดที่มันอยู่ในขอบเขต จุดสำคัญคือ ตัวแปรภายในจะหายไปเมื่อ END แรกถูกถึงและเรียกว่า 'OUT OF SCOPE' เพื่อเข้าใจแนวคิด ให้เรียก Procedure นี้ดังนี้:
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)