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

MySQL 준비된 문(Prepared Statement)에서 반환 값을 선택하는 방법

이 글에서는 저장 프로시저(stored procedure)를 생성한 뒤, MySQL의 준비된 문(prepared statement)에서 반환 값을 선택하는 방법을 알아봅니다.

준비된 문은 PREPARE로 SQL문을 등록하고 EXECUTE로 실행하는 방식으로 동작합니다. 아래 예제에서는 사용자 정의 변수(@returnQuery)에 SELECT 쿼리 문자열을 담아 이를 준비된 문으로 실행하고, 그 결과를 또 다른 변수(@value)에 저장합니다.

1. 저장 프로시저 생성

먼저 저장 프로시저를 만들고, 그 안에서 준비된 문을 통해 반환 값을 선택합니다.

mysql> DELIMITER //
mysql> CREATE PROCEDURE return_value()
   -> BEGIN
   ->   SET @returnQuery= 'SELECT 98 INTO @value';
   ->   PREPARE stmt FROM @returnQuery;
   ->   EXECUTE stmt;
   -> END
   -> //
Query OK, 0 rows affected (0.20 sec)

mysql> DELIMITER ;

위 코드에서는 DELIMITER //로 구분 기호를 변경하여 프로시저 본문 전체를 하나의 문장으로 처리한 뒤, 작업이 끝나면 다시 ;로 되돌립니다.

2. 저장 프로시저 호출

CALL 명령을 사용하여 저장 프로시저를 실행합니다.

mysql> call return_value();
Query OK, 1 row affected (0.07 sec)

3. 결과 값 확인

프로시저 내부에서 INTO @value로 저장된 값은 세션이 유지되는 동안 계속 접근할 수 있습니다. SELECT 문으로 해당 변수의 값을 확인해 보겠습니다.

mysql> select @value;

출력 결과

위 쿼리는 다음과 같은 출력을 생성합니다.

+--------+
| @value |
+--------+
|     98 |
+--------+
1 row in set (0.00 sec)

이처럼 준비된 문 안에서 SELECT ... INTO @변수 구문을 사용하면, 쿼리 실행 결과를 사용자 정의 변수에 담아 프로시저 외부에서도 손쉽게 조회할 수 있습니다.