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

MySQL 저장 프로시저로 테이블에 값 삽입하는 방법

MySQL에서는 IN 매개변수를 사용하는 저장 프로시저(Stored Procedure)를 만들어 테이블에 손쉽게 값을 삽입할 수 있습니다. 이해를 돕기 위해 다음과 같은 데이터가 들어 있는 'student_info' 테이블을 예로 들어 설명하겠습니다.

예제 테이블 확인

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

저장 프로시저 생성하기

이제 'insert_studentinfo'라는 이름의 저장 프로시저를 아래와 같이 생성하면, 'student_info' 테이블에 값을 삽입할 수 있습니다. 프로시저는 네 개의 IN 매개변수(id, name, address, subject)를 받아 INSERT 문을 실행하는 구조입니다.

mysql> DELIMITER // ;
mysql> Create PROCEDURE insert_studentinfo(IN p_id int, IN p_name varchar(20),IN p_Address Varchar(20), IN p_subject Varchar(20))
    -> BEGIN
    -> insert into student_info(id, name, address, subject) values (p_id, p_name,p_address, p_subject);
    -> END //
Query OK, 0 rows affected (0.09 sec)

프로시저 호출하여 값 삽입하기

프로시저 생성이 완료되면 CALL 명령으로 호출하면서 삽입하고자 하는 값들을 전달합니다.

mysql> CALL insert_studentinfo(125,'Raman','Bangalore','Computers')//
Query OK, 1 row affected (0.78 sec)

mysql> DELIMITER ; //

mysql> Select * from Student_info;
+-----+---------+------------+------------+
| id  | Name    | Address    | Subject    |
+-----+---------+------------+------------+
| 100 | Aarav   | Delhi      | Computers  |
| 101 | YashPal | Amritsar   | History    |
| 105 | Gaurav  | Jaipur     | Literature |
| 110 | Rahul   | Chandigarh | History    |
| 125 | Raman   | Bangalore  | Computers  |
+------+---------+------------+-----------+
5 rows in set (0.00 sec)

결과 확인

위의 결과 집합을 보면 새로운 값(id 125, Raman)이 정상적으로 테이블에 삽입된 것을 확인할 수 있습니다.

핵심 포인트 정리

DELIMITER //는 저장 프로시저 내부의 세미콜론(;)이 MySQL 클라이언트에서 문장 종결자로 해석되지 않도록 구분 기호를 임시로 변경하는 명령입니다. 프로시저 생성이 끝나면 반드시 DELIMITER ;로 원래 상태로 되돌려 주어야 합니다. 이러한 방식으로 저장 프로시저를 활용하면 반복적인 INSERT 작업을 간편하게 처리할 수 있습니다.