MySQL 저장 프로시저의 매개변수 이름은 @ 기호로 시작할 수 없습니다. @ 기호는 오직 사용자 정의 변수(User-defined Variable)에만 사용할 수 있습니다.
사용자 정의 변수 선언 문법
프로시저 내부에서 @ 변수를 사용하려면 다음과 같이 SET 명령어로 값을 할당해야 합니다.
SET @yourVariableName = yourValue;
올바른 @ 기호 사용 예제
위 문법을 실제로 적용하여 저장 프로시저 내부에서 @ 변수를 올바르게 선언하고 사용하는 방법을 살펴보겠습니다.
mysql> DELIMITER //
mysql> CREATE PROCEDURE declare_Variable(IN StudentName varchar(100))
BEGIN
SET @Name = StudentName;
SELECT @Name;
END
//
Query OK, 0 rows affected (0.12 sec)
mysql> DELIMITER ;위 예제에서 입력 매개변수 StudentName의 값을 SET 명령어를 통해 사용자 정의 변수 @Name에 할당한 후, 이를 조회하는 구조입니다.
저장 프로시저 호출하기
이제 CALL 명령어를 사용하여 생성한 저장 프로시저를 호출할 수 있습니다.
mysql> call declare_Variable('John Smith');실행 결과
프로시저를 호출하면 다음과 같은 출력 결과를 확인할 수 있습니다.
+------------+ | @Name | +------------+ | John Smith | +------------+ 1 row in set (0.00 sec) Query OK, 0 rows affected, 1 warning (0.03 sec)
정리
핵심은 매개변수 자체에는 @를 붙일 수 없으며, 프로시저 본문 안에서 SET으로 사용자 정의 변수에 값을 담아 활용해야 한다는 점입니다. 이 방식을 사용하면 세션 범위에서 유지되는 변수를 자유롭게 다룰 수 있습니다.