>데이터 베이스 >MySQL 튜토리얼 >MySQL 변수: `@variables`와 프로시저 변수의 차이점은 무엇입니까?

MySQL 변수: `@variables`와 프로시저 변수의 차이점은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2025-01-21 13:46:09561검색

MySQL Variables: What's the Difference Between `@variables` and Procedure 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.