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

MySQL 저장 프로시저에서 단일 SELECT 문으로 두 개의 변수를 설정하는 방법

MySQL에서는 SELECT ... INTO 구문을 활용하면 하나의 SELECT 문만으로 여러 개의 변수에 값을 동시에 할당할 수 있습니다. 이 글에서는 저장 프로시저(Stored Procedure) 내부에서 단일 SELECT 문으로 두 개의 변수를 설정하는 방법을 예제와 함께 단계별로 살펴보겠습니다.

1단계: 테이블 생성

먼저 예제에 사용할 새로운 테이블을 MySQL에서 생성합니다.

mysql> create table useProcedure
-> (
-> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> FirstName varchar(20),
-> LastName varchar(20)
-> );
Query OK, 0 rows affected (0.65 sec)

테이블이 성공적으로 생성되었습니다. Id 컬럼은 자동 증가(AUTO_INCREMENT) 기본키로 설정되어 있어 레코드가 추가될 때마다 고유한 번호가 자동으로 부여됩니다.

2단계: 데이터 삽입

INSERT 명령을 사용하여 테이블에 레코드를 추가합니다. 쿼리는 다음과 같습니다.

mysql> insert into useProcedure(FirstName,LastName) values('Adam','Smith');
Query OK, 1 row affected (0.27 sec)

3단계: 저장 프로시저 생성

다음은 단일 SELECT 문으로 두 개의 변수를 설정하는 저장 프로시저입니다. 먼저 DECLARE 문으로 변수 two개를 선언한 뒤, SELECT ... INTO 구문을 통해 조회된 값을 한 번에 각 변수에 할당합니다.

mysql> DELIMITER //
mysql> create procedure Sp_Demo()
-> BEGIN
-> declare one varchar(20);
-> declare two varchar(20);
-> select FirstName, LastName INTO one, two from useProcedure where id = 1;
-> select one, two;
-> END;
-> //
Query OK, 0 rows affected (0.26 sec)
mysql> DELIMITER ;

핵심은 다음 줄입니다. FirstName과 LastName 두 컬럼의 값을 별도의 쿼리 실행 없이 INTO 절을 사용해 변수 one과 two에 동시에 대입합니다.

select FirstName, LastName INTO one, two from useProcedure where id = 1;

4단계: 저장 프로시저 호출

CALL 명령을 사용하여 생성한 저장 프로시저를 호출합니다.

mysql> call Sp_Demo();

실행 결과는 다음과 같습니다.

+------+-------+
| one | two |
+------+-------+
| Adam | Smith |
+------+-------+
1 row in set (0.00 sec)
Query OK, 0 rows affected (0.01 sec)

결과를 확인해 보면 FirstName 값인 'Adam'은 변수 one에, LastName 값인 'Smith'는 변수 two에 각각 정상적으로 할당된 것을 알 수 있습니다. 이처럼 SELECT ... INTO 구문을 사용하면 쿼리를 여러 번 실행할 필요 없이 단 한 번의 SELECT 문으로 여러 변수를 효율적으로 설정할 수 있으며, 코드가 간결해지고 데이터베이스 부하도 줄일 수 있습니다.