집 >데이터 베이스 >MySQL 튜토리얼 >MySQL 변수: `@variables`와 프로시저 변수의 차이점은 무엇입니까?
MySQL 사용자 정의 변수: @variables와 프로시저 변수
MySQL은 앞에 @
기호(예: @myVar
)로 표시되는 사용자 정의 변수를 제공합니다. @variables
은 세션 범위입니다. 세션 내에서 초기화되고 세션이 끝날 때까지 지속됩니다. 결정적으로 프로시저 변수와 다릅니다.
@variables
과 달리 프로시저 변수는 저장 프로시저에 대해 로컬입니다. 프로시저가 호출될 때마다 해당 지역 변수가 NULL
으로 다시 초기화됩니다. 이는 동일한 세션 내의 여러 프로시저 호출에서 해당 값을 유지하는 @variables
과 뚜렷한 대조를 이룹니다. 프로시저 내에서 @variable
을 수정하면 해당 세션 내의 후속 호출 값에 영향을 미칩니다.
@variables
및 프로시저 변수를 MySQL의 시스템 변수와 구별하는 것도 중요합니다. 시스템 변수는 전역(예: @@global.port
)이거나 세션 범위(예: @@session.sql_mode
)입니다. 세션 시스템 변수는 세션별로 다르지만 @variables
.
차이점을 설명해 보겠습니다.
<code class="language-sql">CREATE PROCEDURE prc_test () BEGIN DECLARE myProcVar INT DEFAULT 1; SET myProcVar = myProcVar + 1; SET @myUserVar = @myUserVar + 1; SELECT myProcVar, @myUserVar; END; SET @myUserVar = 1; CALL prc_test(); CALL prc_test(); CALL prc_test();</code>
출력 내용은 다음과 같습니다.
<code>myProcVar @myUserVar --------- ---------- 2 2 2 3 2 4</code>
myProcVar
(프로시저 변수)는 호출할 때마다 2로 재설정되는 반면, @myUserVar
(사용자 정의 변수)는 호출 시 해당 값을 유지하면서 누적적으로 증가합니다.
이러한 이해는 MySQL 변수를 효과적으로 사용하는 데 중요합니다. @variables
세션 데이터를 관리하고, 프로시저 변수는 로컬 프로시저 상태를 처리하며, 시스템 변수는 데이터베이스 환경을 제어합니다.
위 내용은 MySQL 변수: `@variables`와 프로시저 변수의 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!