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

MySQL에서 IN 매개변수를 활용한 저장 프로시저 생성 방법

IN 매개변수란 무엇인가?

MySQL 저장 프로시저에서 IN 매개변수는 프로시저 외부에서 값을 전달받아 내부 로직에서 활용할 수 있게 해주는 입력용 파라미터입니다. 이번 글에서는 실제 예제 테이블을 통해 IN 매개변수를 사용하는 저장 프로시저를 만드는 방법을 단계별로 살펴보겠습니다.

예제 테이블 준비하기

설명을 돕기 위해 다음과 같은 데이터를 가진 student_info 테이블을 사용하겠습니다.

mysql> Select * from student_info;
+-----+---------+------------+------------+
| id  | Name    | Address    | Subject    |
+-----+---------+------------+------------+
| 101 | YashPal | Amritsar   | History    |
| 105 | Gaurav  | Jaipur     | Literature |
| 110 | Rahul   | Chandigarh | History    |
| 125 | Raman   | Shimla     | Computers  |
+-----+---------+------------+------------+
4 rows in set (0.00 sec)

IN 매개변수가 포함된 저장 프로시저 생성하기

이제 아래 쿼리를 통해 학생 이름을 매개변수로 전달하면 해당 학생의 모든 정보를 조회해 주는 저장 프로시저를 생성해 보겠습니다.

mysql> DELIMITER // ;
mysql> Create PROCEDURE detail(IN S_Name VARCHAR(20))
    -> BEGIN
    -> SELECT * From Student_info WHERE Name = S_Name;
    -> END //
Query OK, 0 rows affected (0.16 sec)
mysql> DELIMITER ;

여기서 S_Name은 'detail'이라는 저장 프로시저의 IN 매개변수입니다. 프로시저 본문 안에서는 이 매개변수를 조건으로 사용하여 Name 컬럼과 일치하는 레코드만 조회합니다.

저장 프로시저 호출하기

생성된 프로시저는 CALL 문으로 실행할 수 있습니다. 예를 들어, 학생 'Gaurav'의 모든 세부 정보를 확인하고 싶다면 다음과 같이 호출하면 됩니다.

mysql> CALL detail('Gaurav');
+-----+--------+---------+------------+
| id  | Name   | Address | Subject    |
+-----+--------+---------+------------+
| 105 | Gaurav | Jaipur  | Literature |
+-----+--------+---------+------------+
1 row in set (0.00 sec)

Query OK, 0 rows affected (0.01 sec)

마찬가지로 다른 학생 이름을 인자로 넘기면 해당 학생의 정보만 출력됩니다.

mysql> CALL detail('Raman');
+-----+-------+---------+-----------+
| id  | Name  | Address | Subject   |
+-----+-------+---------+-----------+
| 125 | Raman | Shimla  | Computers |
+-----+-------+---------+-----------+
1 row in set (0.00 sec)

Query OK, 0 rows affected (0.01 sec)

정리

IN 매개변수를 활용하면 하나의 저장 프로시저를 재사용하면서 다양한 조건의 데이터를 손쉽게 조회할 수 있습니다. 위 예제처럼 이름을 입력값으로 받아 일치하는 학생 정보를 반환하는 방식은 실무에서도 자주 사용되는 패턴이므로, DELIMITER 변경부터 프로시저 생성과 호출까지의 흐름을 잘 익혀두시기 바랍니다.