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)