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

MySQL 저장 프로시저 매개변수에서 특수 문자 @가 작동하지 않는 이유와 해결 방법

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으로 사용자 정의 변수에 값을 담아 활용해야 한다는 점입니다. 이 방식을 사용하면 세션 범위에서 유지되는 변수를 자유롭게 다룰 수 있습니다.