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가 있습니다. 여기서 내부 변수 선언은 범위 내에 있는 한 우선합니다. 요점은 첫 번째 END에 도달하면 내부 변수가 사라지고 이를 'OUT OF SCOPE'라고 합니다. 개념을 이해하려면 다음과 같이 이 절차를 호출하십시오. -

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)