>  기사  >  데이터 베이스  >  MySQL의 사용자 정의 변수와 지역 변수?

MySQL의 사용자 정의 변수와 지역 변수?

WBOY
WBOY앞으로
2023-09-06 21:05:061363검색

MySQL 中的用户定义变量与局部变量?

사용자 정의 변수는 세션별 변수라고도 합니다. 이는 세션 어딘가에서 초기화될 수 있고 세션이 끝날 때까지 사용자 정의 변수의 값을 포함하는 느슨한 유형의 변수입니다.

사용자 정의 변수 앞에는 @ 기호가 붙습니다. 예:

@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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 tutorialspoint.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제