Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL 저장 프로시저에서 로컬 변수 선언 및 사용하는 방법

MySQL 저장 프로시저의 로컬 변수란?

로컬 변수(Local Variable)는 저장 프로시저 내부에서 DECLARE 문을 통해 선언되는 변수입니다. 이러한 변수는 선언된 BEGIN...END 블록 안에서만 유효하며, 블록 외부에서는 접근할 수 없습니다. 또한 INT, VARCHAR, DATE 등 SQL에서 지원하는 어떠한 데이터 타입도 사용할 수 있습니다.

로컬 변수는 다음과 같은 특징을 가집니다.

  • 선언 위치: 반드시 BEGIN 바로 뒤, 다른 실행문보다 먼저 선언해야 합니다.
  • 기본값 설정: DEFAULT 키워드를 사용하여 선언 시 초기값을 지정할 수 있습니다.
  • 값 할당: SET 문이나 SELECT ... INTO 문을 통해 값을 할당합니다.

로컬 변수 사용 예제

다음은 저장 프로시저에서 로컬 변수를 선언하고 활용하는 예제입니다.

mysql> DELIMITER // ;
mysql> Create Procedure Proc_Localvariables()
    -> BEGIN
    -> DECLARE X INT DEFAULT 100;
    -> DECLARE Y INT;
    -> DECLARE Z INT;
    -> DECLARE A INT;
    -> SET Y = 250;
    -> SET Z = 200;
    -> SET A = X+Y+Z;
    -> SELECT X,Y,Z,A;
    -> END //
Query OK, 0 rows affected (0.00 sec)

mysql> Delimiter ; //
mysql> CALL Proc_Localvariables();
+------+------+------+------+
| X    | Y    | Z    | A    |
+------+------+------+------+
| 100  | 250  | 200  | 550  |
+------+------+------+------+
1 row in set (0.00 sec)

Query OK, 0 rows affected (0.01 sec)

예제 코드 설명

위 프로시저의 동작 과정을 단계별로 살펴보면 다음과 같습니다.

  1. DECLARE X INT DEFAULT 100; — 정수형 변수 X를 선언하고 기본값 100으로 초기화합니다.
  2. DECLARE Y INT;, DECLARE Z INT;, DECLARE A INT; — Y, Z, A라는 세 개의 정수형 변수를 선언합니다.
  3. SET Y = 250;, SET Z = 200; — SET 문을 사용하여 Y에는 250, Z에는 200을 할당합니다.
  4. SET A = X+Y+Z; — 세 변수의 합(100 + 250 + 200)을 계산하여 A에 저장합니다.
  5. SELECT X,Y,Z,A; — 네 개의 변수 값을 결과 집합으로 반환합니다.

프로시저를 호출(CALL Proc_Localvariables())하면 위와 같이 X=100, Y=250, Z=200, A=550이 출력되는 것을 확인할 수 있습니다.

주의 사항

로컬 변수의 이름이 테이블 컬럼 이름과 동일할 경우, SQL 문장 내에서 해당 이름은 로컬 변수로 해석됩니다. 따라서 의도치 않은 동작을 방지하려면 변수 이름은 컬럼 이름과 구분되도록 작성하는 것이 좋습니다. 또한 로컬 변수는 선언된 블록이 종료되면 자동으로 소멸되므로, 프로시저 외부에서는 사용할 수 없다는 점을 유의해야 합니다.