Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

ขอบเขตของตัวแปร (Scope of variables) ภายใน MySQL Stored Procedure หมายถึงอะไร


สมมติว่าหากเราประกาศตัวแปรภายในบล็อก 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)