MySQL에서 DECLARE를 사용한 변수 선언
MySQL에서 DECLARE 문은 저장 프로시저(Stored Procedure)나 저장 함수 내부에서 지역 변수를 선언할 때 사용됩니다. 주의할 점은 DECLARE를 일반 SQL문이나 클라이언트 세션에서 직접 사용할 수 없으며, 반드시 BEGIN ... END 블록 안에 작성해야 한다는 것입니다.
기본 문법
declare yourVariableName yourDataType;
필요하다면 선언과 동시에 기본값을 지정할 수도 있습니다.
declare yourVariableName yourDataType default defaultValue;
저장 프로시저 생성 예제
실제 동작을 이해하기 위해 입력받은 숫자의 제곱 값을 계산하는 저장 프로시저를 만들어 보겠습니다.
mysql> delimiter //
mysql> create procedure square_demo(in Value int)
begin
declare magicValue int;
set magicValue=Value;
select concat('Your Square Value=',magicValue*magicValue) as Output;
end ;
//
Query OK, 0 rows affected (0.00 sec)
mysql> delimiter ;
위 프로시저의 동작 방식을 단계별로 살펴보면 다음과 같습니다.
declare magicValue int;— 정수형 지역 변수 magicValue를 선언합니다.set magicValue=Value;— 입력 매개변수 Value의 값을 magicValue에 대입합니다.select concat(...)— 변수의 제곱 값을 문자열과 함께 결과로 출력합니다.
저장 프로시저 호출하기
CALL 명령어를 사용하여 저장 프로시저를 실행할 수 있습니다.
mysql> call square_demo(15);
실행 결과는 다음과 같습니다.
+-----------------------+ | Output | +-----------------------+ | Your Square Value=225 | +-----------------------+ 1 row in set (0.00 sec) Query OK, 0 rows affected (0.00 sec)
입력값 15의 제곱인 225가 정상적으로 출력되는 것을 확인할 수 있습니다.
DECLARE 사용 시 주요 참고 사항
- DECLARE는 반드시
BEGIN ... END블록의 시작 부분, 즉 다른 문장들보다 먼저 위치해야 합니다. - 쉼표로 구분하여 여러 변수를 한 번에 선언할 수 있으며,
DEFAULT키워드로 초기값을 설정할 수 있습니다. - 저장 프로시저 외부에서는
SET @변수명 = 값;형태의 사용자 정의 변수를 사용할 수 있지만, 이는 세션 전체에서 유효하다는 점에서 DECLARE로 선언한 지역 변수와 차이가 있습니다.