MySQL 프로시저에서 DECLARE로 변수 선언하기
MySQL에서는 DECLARE 명령어를 사용하여 저장 프로시저(Stored Procedure) 내부에 변수를 선언할 수 있습니다. DECLARE 문은 반드시 BEGIN 블록의 시작 부분에 위치해야 하며, 다른 SQL 문장보다 먼저 작성해야 한다는 점에 유의하세요.
저장 프로시저 생성 예제
아래 예제는 DECLARE를 활용해 변수를 선언하고, 조건문과 함께 사용하는 간단한 저장 프로시저입니다.
mysql> DELIMITER //
mysql> CREATE PROCEDURE DECLARE_VARIABLE_DEMO(IN value int)
-> BEGIN
-> DECLARE searchValue int;
-> set searchValue=value;
-> if searchValue=10 then
-> select searchValue+100;
-> else
-> select searchValue;
-> end if;
-> END
-> //
Query OK, 0 rows affected (0.17 sec)
mysql> DELIMITER ;
코드 설명
- DELIMITER //: 기본 구분자인 세미콜론(;) 대신 //를 임시 구분자로 지정하여, 프로시저 내부의 세미콜론이 문장 종료로 해석되지 않도록 합니다.
- DECLARE searchValue int;: 정수형(int) 변수 searchValue를 선언합니다.
- SET searchValue = value;: 입력 매개변수 value의 값을 선언된 변수에 할당합니다.
- IF ~ THEN ~ ELSE: 조건문을 통해 값이 10이면 100을 더한 결과를, 그렇지 않으면 원래 값을 반환합니다.
저장 프로시저 호출하기
프로시저 생성이 완료되면 CALL 명령어를 사용하여 실행할 수 있습니다.
mysql> call DECLARE_VARIABLE_DEMO(10);
입력값으로 10을 전달하면 조건문이 참이 되어 다음과 같은 결과가 출력됩니다.
+-----------------+
| searchValue+100 |
+-----------------+
| 110 |
+-----------------+
1 row in set (0.00 sec)
Query OK, 0 rows affected (0.02 sec)
주요 참고 사항
- DECLARE 문은 프로시저의 BEGIN 블록 내에서 가장 먼저 작성해야 합니다.
- 여러 개의 변수를 동시에 선언할 수 있으며, 기본값은
DECLARE 변수명 타입 DEFAULT 값;형태로 지정할 수 있습니다. - 프로시저 실행 후에는 DELIMITER ;로 구분자를 원래대로 복구하는 것을 잊지 마세요.