MySQL에서 저장 프로시저(Stored Procedure)와 IN() 연산자를 함께 사용하면 원하는 특정 레코드만 손쉽게 조회할 수 있습니다. 이번 글에서는 테이블 생성부터 저장 프로시저 작성, 그리고 호출까지 전 과정을 단계별로 살펴보겠습니다.
1. 테이블 생성하기
먼저 예제에 사용할 테이블을 생성합니다.
mysql> create table DemoTable2004
(
UserId varchar(20),
UserName varchar(20)
);
Query OK, 0 rows affected (0.57 sec)2. 샘플 데이터 삽입하기
INSERT 명령어를 사용해 테이블에 레코드를 추가합니다.
mysql> insert into DemoTable2004 values('John_123','John');
Query OK, 1 row affected (0.93 sec)
mysql> insert into DemoTable2004 values('23456_Carol','Carol');
Query OK, 1 row affected (0.25 sec)
mysql> insert into DemoTable2004 values('111_Bob','Bob');
Query OK, 1 row affected (0.14 sec)3. 전체 레코드 확인하기
SELECT 문으로 테이블에 저장된 모든 레코드를 조회해 보겠습니다.
mysql> select * from DemoTable2004;
실행 결과는 다음과 같습니다.
+-------------+----------+ | UserId | UserName | +-------------+----------+ | John_123 | John | | 23456_Carol | Carol | | 111_Bob | Bob | +-------------+----------+ 3 rows in set (0.00 sec)
4. 저장 프로시저 생성 및 IN()으로 특정 레코드 조회하기
다음은 저장 프로시저를 생성하고, 매개변수로 전달된 값과 일치하는 특정 레코드만 IN() 조건으로 조회하는 쿼리입니다.
mysql> delimiter //
mysql> create procedure test_of_in(IN uId varchar(20))
BEGIN
select * from DemoTable2004 where UserId IN(uId);
END
//
Query OK, 0 rows affected (0.15 sec)
mysql> delimiter ;프로시저 생성이 완료되면 CALL 문으로 저장 프로시저를 호출합니다.
mysql> call test_of_in('23456_Carol');호출 결과는 다음과 같습니다.
+-------------+----------+ | UserId | UserName | +-------------+----------+ | 23456_Carol | Carol | +-------------+----------+ 1 row in set (0.00 sec) Query OK, 0 rows affected, 1 warning (0.02 sec)
핵심 정리
위 예제처럼 저장 프로시저의 입력 매개변수(uId)를 WHERE 절의 IN() 조건에 넣으면, 호출 시 전달한 값과 일치하는 레코드만 반환됩니다. 이 방식은 여러 값을 동시에 비교해야 하는 상황에서도 유연하게 확장할 수 있으며, 반복적인 조회 작업을 프로시저 하나로 재사용할 수 있다는 장점이 있습니다.