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

คุณหมายถึงอะไรโดยขอบเขตของตัวแปรภายในกระบวนงานที่เก็บไว้ MySQL


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