MySQL 저장 프로시저(Stored Procedure)에서 변수를 사용하려면 선언 위치와 순서를 정확히 지켜야 합니다. 가장 중요한 규칙은 다음과 같습니다.
변수 선언의 기본 규칙
변수 선언은 반드시 BEGIN과 END 블록 사이에 위치해야 합니다. 또한 BEGIN 직후의 첫 번째 문장은 반드시 변수 선언문(DECLARE)이어야 하며, 그 이후에야 INSERT, SELECT, SET 등 다른 SQL 문을 작성할 수 있습니다.
예제로 확인하기
아래 예제에서는 output이라는 이름의 변수를 선언하고 값을 할당한 후 조회합니다.
mysql> DELIMITER // mysql> CREATE PROCEDURE showVariablesValue() -> BEGIN -> DECLARE output varchar(100); -> SET output="Hello MySQL"; -> SELECT output; -> END -> // Query OK, 0 rows affected (0.25 sec) mysql> DELIMITER ;
위 코드의 핵심 흐름은 다음과 같습니다.
DECLARE output varchar(100);— BEGIN 바로 아래에서 변수를 먼저 선언합니다.SET output="Hello MySQL";— 선언된 변수에 값을 할당합니다.SELECT output;— 변수 값을 조회하여 결과를 반환합니다.
저장 프로시저 호출하기
프로시저 생성이 완료되면 CALL 명령으로 실행할 수 있습니다.
mysql> CALL showVariablesValue();
실행하면 다음과 같은 결과가 출력됩니다.
+-------------+ | output | +-------------+ | Hello MySQL | +-------------+ 1 row in set (0.03 sec) Query OK, 0 rows affected (0.04 sec)
정리
MySQL 프로시저에서 변수를 다룰 때는 BEGIN과 END 사이의 첫 문장에서 DECLARE로 변수를 선언하고, 이후 SET으로 값을 할당하는 순서를 지키는 것이 핵심입니다. 이 규칙만 지키면 변수 관련 오류 없이 안정적으로 저장 프로시저를 작성할 수 있습니다.