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