Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Phạm vi biến (Scope) bên trong MySQL stored procedure

Biến khai báo trong khối BEGIN/END chỉ có hiệu lực trong khối đó. Có thể khai báo biến trùng tên trong khối lồng nhau - hoàn toàn hợp lệ nhưng phạm vi riêng biệt.

Ví dụ

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)

Gọi thủ tục:

mysql> CALL Scope_variables();
+-------+
| A     |
+-------+
| inner |   -- SELECT đầu tiên trong khối con
+-------+
+-------+
| A     |
+-------+
| outer |   -- SELECT thứ hai trong khối cha (biến inner đã out of scope)
+-------+

Biến inner ưu tiên trong khối con. Khi gặp END đầu tiên, biến inner hết hiệu lực (out of scope), biến outer lại hiện hữu.