사용자 정의 변수는 세션별 변수라고도 합니다. 이는 세션 어딘가에서 초기화될 수 있고 세션이 끝날 때까지 사용자 정의 변수의 값을 포함하는 느슨한 유형의 변수입니다.
사용자 정의 변수 앞에는 @ 기호가 붙습니다. 예:
@anyVariableName;
사용자 정의 변수를 초기화하는 방법에는 두 가지가 있습니다. SET 명령을 사용하거나 SELECT 쿼리를 사용할 수 있습니다. 첫 번째 방법은 다음과 같습니다.
SET @anyVariableName=anyValue;
두 번째 방법은 다음과 같습니다.
SELECT @anyVariableName :=anyValue;
SELECT 쿼리에서 콜론(:)을 사용하지 않으면 표현식으로 평가됩니다. 결과는 true 또는 false입니다.
mysql> select @m=10;
출력은 다음과 같습니다.
+-------+ | @m=10 | +-------+ | 1 | +-------+ 1 row in set (0.00 sec)
지역 변수는 DECLARE 키워드와 함께 저장 프로시저, 함수 등에서 사용할 수 있습니다. 사용자 정의 변수처럼 @ 접두사가 필요하지 않습니다.
지역변수의 문법은 다음과 같습니다.
DECLARE yourVariableName dataType;
NOTE: 지역 변수와 사용자 정의 변수의 주요 차이점은 저장 프로시저가 호출될 때마다 지역 변수가 NULL 값으로 다시 초기화되는 반면, 세션별 변수나 사용자 정의 변수는 그렇지 않다는 점입니다. . NULL로 다시 초기화되지 않았습니다. 한 사용자가 설정한 사용자 정의 변수는 다른 사용자가 볼 수 없습니다. 특정 사용자에 대한 모든 세션 변수는 사용자가 종료할 때 자동으로 삭제됩니다.
다음은 저장 프로시저를 사용한 세션별 변수 및 지역 변수의 데모입니다. 지역 변수와 사용자 정의 변수를 포함하는 저장 프로시저를 생성하는 쿼리는 다음과 같습니다.
mysql> DELIMITER // mysql> CREATE PROCEDURE sp_LocalAndUserDefinedVariableDemo() -> BEGIN -> DECLARE localVariable int default 10; -> SET localVariable=localVariable+10; -> SET @userVariable=@userVariable+10; -> SELECT localVariable; -> SELECT @userVariable; -> END; -> // Query OK, 0 rows affected (0.39 sec) mysql> DELIMITER ;
이제 사용자 정의 변수의 값을 설정합니다. 쿼리는 다음과 같습니다.
mysql> SET @userVariable=10; Query OK, 0 rows affected (0.00 sec)
이제 저장 프로시저를 호출합니다. 처음 호출 시 사용자 정의 변수는 10+10=20, 로컬 변수는 10+10=20입니다.
호출 명령을 사용하여 저장 프로시저를 호출합니다.
mysql> CALL sp_LocalAndUserDefinedVariableDemo();
다음은 출력입니다.
+---------------+ | localVariable | +---------------+ | 20 | +---------------+ 1 row in set (0.32 sec) +---------------+ | @userVariable | +---------------+ | 20 | +---------------+ 1 row in set (0.34 sec) Query OK, 0 rows affected (0.36 sec)
두 번째 호출에서 사용자 정의 변수는 값 20을 보유하고 20+10=30처럼 10을 더하는 반면, 로컬 변수는 20+10=30처럼 10을 추가합니다. 변수가 다시 사용됩니다. 10 다시 초기화하고 10+10=20과 같이 10을 추가합니다.
저장 프로시저를 호출하고 샘플 출력을 확인하세요.
mysql> CALL sp_LocalAndUserDefinedVariableDemo();
출력은 다음과 같습니다.
+---------------+ | localVariable | +---------------+ | 20 | +---------------+ 1 row in set (0.00 sec) +---------------+ | @userVariable | +---------------+ | 30 | +---------------+ 1 row in set (0.01 sec) Query OK, 0 rows affected (0.02 sec)
세 번째 호출에서 사용자 정의 변수는 값 30을 유지하고 30+10=40과 같이 10을 추가하고 지역 변수를 다시 추가합니다. 10으로 다시 초기화하고 10+10=20처럼 10을 추가합니다.
이제 모든 프로시저 호출에서 로컬 변수가 NULL일 수 있는 값이나 제 경우와 같이 기본값 10을 제공한 다른 값으로 다시 초기화된다고 말할 수 있습니다. 즉, 모든 프로시저 호출에서 지역 변수는 값 10으로 설정되지만 사용자 정의 변수는 그렇지 않습니다.
위 내용은 MySQL의 사용자 정의 변수와 지역 변수?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!