mysql 저장 프로시저에는 어떤 변수 유형이 있습니까?

WBOY
풀어 주다: 2022-05-16 10:30:19
원래의
4536명이 탐색했습니다.

mysql 저장 프로시저의 변수 유형: 1. 지역 변수, 정의 구문은 "DECLARE 변수 이름 데이터 유형"입니다. 2. 사용자 변수, 정의 구문은 "set @variable name:=..."입니다. 변수, 전역 변수 "@@global"과 세션 변수 "@@session"으로 나눌 수 있습니다.

mysql 저장 프로시저에는 어떤 변수 유형이 있습니까?

이 튜토리얼의 운영 환경: windows10 시스템, mysql8.0.22 버전, Dell G3 컴퓨터.

mysql 저장 프로시저의 변수 유형은 무엇입니까?

MySQL 저장 프로시저의 공통 변수: 지역 변수, 사용자 변수, 시스템 변수

1. 지역 변수

프로세스 본문에서 지역 변수를 선언할 수 있습니다. 임시 사용을 위해 일부 값을 저장하세요.

1. 지역 변수 구문 정의:

DECLARE  var_name[, var_name] ...  type [DEFAULT value];
로그인 후 복사

그 중 type은 int, float, date, varchar(length)

참고:

①DECLARE는 지역 변수를 선언하는 데 사용됩니다. DECLARE는 BEGIN ... END 복합 문에서만 사용되며 동일한 이름을 가진 변수를 선언하는 블록을 제외하고 다른 문이 중첩된 블록에서 사용될 수 있기 전에 복합 문의 시작 부분에 있어야 합니다.

② 변수에 기본값을 제공하려면 DEFAULT 절을 사용하세요(값은 상수이거나 표현식으로 지정할 수 있음). DEFAULT 절이 없으면 초기 값은 NULL입니다.

2. 기본 형식:

CREATE PROCEDURE sp_name ([proc_parameter[,...]])
BEGIN
DECLARE var_name1 type [DEFAULT value];
DECLARE var_name2 type [DEFAULT value];
DECLARE……;
[characteristic ...];
로그인 후 복사

예 1: 프로세스를 만들고, 지역 변수에 대한 기본값을 지정하고, 프로세스를 호출합니다.

mysql>delimiter $$
mysql> create procedure test1(out num1 int)->begin-> declare num2 int default 100;-> set num1=num2;->end->$$
mysql>delimiter ;
mysql>call test1(@num);
mysql> select@num;+------+
| @num |
+------+
| 100 |
+------+
로그인 후 복사

분석:

test1 저장 프로시저 만들기: 출력은 num1 변수, 로컬 변수 Num2는 int 유형이고 기본값은 100입니다. set을 사용하여 num2의 값(처리되지 않은 경우 기본값)을 num1에 할당합니다.

Call test1: 사용자 변수 num을 사용하여 저장 프로시저의 출력 값 num1을 받습니다...

Default 리터럴 외에도 값은 스칼라 하위 쿼리를 포함한 복잡한 표현식일 수도 있습니다

예 2: 생성 프로세스, 모든 플레이어 수를 사용하여 변수 초기화

mysql>delimiter $$
mysql> create procedure test2(out num1 int)->begin-> declare num2 int default(select count(*) fromPLAYERS);-> set num1=num2;->end$$mysql>delimiter ;
mysql>call test2(@num);mysql> select@num;+------+
| @num |
+------+
| 14 |
+------+
로그인 후 복사

참고: MySQL은 배열을 로컬 변수로 지원하지 않습니다.

3. 로컬 변수의 범위:

즉, 변수를 오류 없이 정상적으로 사용할 수 있는 프로그램 블록의 범위입니다.

중첩 블록의 경우

외부 블록에 선언된 변수는 내부 블록에서 직접 사용할 수 있으며,

내부 블록에 선언된 변수는 내부 블록에서만 사용할 수 있습니다.

mysql 저장 프로시저에는 어떤 변수 유형이 있습니까?

분석: 변수 v2는 내부 블록 b2에서만 사용할 수 있습니다. set 문과 블록 b3의 마지막 set 문이 잘못되었습니다.

2. 사용자 변수

> 사용자 변수는 데이터베이스 연결과 관련되어 있습니다. 현재 연결에서 선언된 변수는 연결이 끊어지면 사라지며, 이 연결에서 선언된 변수는 사용되는 다른 연결에서 사용할 수 없습니다.

> @ 기호는 사용자 변수를 나타냅니다.

1. 사용자 변수 정의(set, select):

1) set 문은 사용자 변수에 값을 할당합니다.

할당자로 "=" 또는 ":="를 사용할 수 있습니다. 각 변수에 정수, 실수, 문자열 또는 NULL 값이 될 수 있습니다.

mysql> set @zjc:=999;
mysql> select@zjc;+------+
| @zjc |
+------+
| 999 |
+------+
로그인 후 복사

2) select 문은 사용자 변수에 값을 할당합니다.

할당 문자는 "대신 ":="여야 합니다. =", SET이 아닌 문에서는 =가 고려되기 때문입니다. 비교 연산자입니다.

mysql> select @abc:=123;+-----------+
| @abc:=123 |
+-----------+
| 123 |
+-----------+mysql> select@abc;+------+
| @abc |
+------+
| 123 |
+------+
로그인 후 복사

참고:

① 사용자 변수는 어디에서나 정의하여 사용할 수 있으며, 정의하지 않은 경우 직접 사용할 수 있습니다. (기본값은 null입니다.) .

②사용자 변수의 변수 이름 형식: @var_name, @ 기호 포함.

③사용자 변수를 남용하면 프로그램을 이해하고 관리하기가 어려워집니다.

확장된 변수 할당: 구문 설정

MySQL의 변수는 데이터 유형을 엄격하게 제한하지 않습니다. 변수의 데이터 유형은 변수에 할당된 값에 따라 언제든지 변경됩니다.

SET variable_assignment [, variable_assignment] ...
variable_assignment:
user_var_name=expr|[GLOBAL | SESSION] system_var_name =expr|[@@global. | @@session. | @@] system_var_name = expr
로그인 후 복사

##은 사용자 변수, 시스템 변수에 값을 할당하는 데 사용되며, 그 과정에서 로컬 변수에 값을 할당할 수도 있습니다.

참고:

시스템 변수를 설정하는 경우 범위 수정이 없으며 기본값은 세션 범위를 나타냅니다.

(특별 참고: 일부 시스템 변수는 범위 수정이 없고 설정할 수 없으므로 다음을 수행하는 것이 가장 좋습니다. 범위 세트 시스템 변수와 함께 가져옵니다).

2. 사용자 변수의 범위

현재 연결에 정의된 사용자 변수가 현재 연결에서 사용되는 한 괜찮지만 그 외에는 아무 것도 없습니다.

3. 로컬 변수와의 차이점:

로컬 변수에는 변수 이름만 있고 사용자 변수 이름 앞에는 @ 기호가 없습니다.

모두 먼저 정의된 다음 사용됩니다. 정의되지 않은 변수의 경우 선택 값이 비어 있습니다.

로컬 변수는 저장 프로시저 내부에서만 사용되며 프로세스 외부에서는 의미가 없습니다. 시작-끝 블록이 처리되면 로컬 변수는 사라지지만 사용자 변수는 저장 프로시저 내부와 외부에서 사용할 수 있습니다.

팁: 저장 프로시저 내에서는 사용자 변수 대신 지역 변수를 사용하세요.

3. MySQL 변수의 사용자 변수와 시스템 변수

1. 사용자 변수는 위에서 언급한 @var_name(@ 기호)입니다.

① 사용자 변수는 데이터베이스 연결 후 선언됩니다. . 연결이 끊어지면 자동으로 사라집니다.

②할당 없이 사용자 변수를 선택하면 값이 없음을 의미합니다.

Mysql 변수는 동적 언어와 유사하며 할당되는 값의 유형에 따라 변수의 값이 변경됩니다.

2. 시스템 변수: 시스템 변수의 범위에 따라 전역 변수와 세션 변수(@ 기호 2개)로 구분됩니다.

①전역 변수(@@global.)

MySQL이 시작되면 서버가 자동으로 변경됩니다. 전역 변수 변수는 기본값으로 초기화됩니다.

전역 변수의 기본값은 MySQL 구성 파일(my.ini, my.cnf)을 변경하여 변경할 수 있습니다.

②세션 변수(@@session.)

새 연결이 설정될 때마다 MySQL에 의해 초기화됩니다.

MYSQL은 현재 모든 전역 변수의 값을 세션 변수로 복사합니다(또한 예를 들어, 세션이 설정된 후 세션 변수와 전역 변수의 값을 수동으로 변경하지 않으면 이러한 변수의 값은 모두 동일하게 됩니다.

#전역 변수와 세션 변수의 차이점: 전역 변수를 수정하면 전체 서버에 영향을 주지만, 세션 변수를 수정하면 현재 세션에만 영향을 미칩니다.

추천 학습: mysql 비디오 튜토리얼

위 내용은 mysql 저장 프로시저에는 어떤 변수 유형이 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!