MySQL에서 저장 프로시저(Stored Procedure)를 활용하면 반복적인 INSERT 작업을 하나의 프로시저로 묶어 손쉽게 처리할 수 있습니다. 이 글에서는 저장 프로시저를 생성하고, 이를 호출하여 테이블에 데이터를 삽입하는 전체 과정을 단계별로 살펴보겠습니다.
저장 프로시저의 기본 문법
테이블에 데이터를 삽입하는 저장 프로시저의 기본 문법은 다음과 같습니다.
create procedure yourProcedureName(OptionalParameter)
begin
insert into yourTableName() values(yourValue1,yourValue2,...N);
end프로시저 이름 뒤에는 선택적으로 매개변수를 정의할 수 있으며, begin과 end 사이에 실행할 SQL문을 작성합니다.
1단계: 샘플 테이블 생성
먼저 실습에 사용할 테이블을 만들어 보겠습니다.
mysql> create table DemoTable1928
(
Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
Name varchar(20),
Age int
);
Query OK, 0 rows affected (0.00 sec)위 테이블은 자동 증가(AUTO_INCREMENT)되는 기본키인 Id 컬럼과, 이름(Name), 나이(Age) 컬럼으로 구성되어 있습니다.
2단계: 저장 프로시저 생성
다음은 데이터를 삽입하는 저장 프로시저를 생성하는 쿼리입니다.
mysql> delimiter //
mysql> create procedure insert_demo(IN Name varchar(40),IN Age int)
begin
insert into DemoTable1928(Name,Age) values(Name,Age);
end
//
Query OK, 0 rows affected (0.00 sec)
mysql> delimiter ;여기서 주목할 점은 두 가지입니다. 첫째, delimiter // 명령으로 구분자를 변경한 것입니다. 저장 프로시저 내부에는 세미콜론(;)이 여러 개 포함될 수 있으므로, MySQL이 프로시저 전체를 하나의 문장으로 인식하도록 구분자를 임시로 변경해야 합니다. 프로시저 생성이 완료되면 delimiter ;로 원래대로 되돌립니다. 둘째, IN 키워드를 사용해 외부에서 값을 전달받는 입력 매개변수를 정의했습니다.
3단계: 저장 프로시저 호출하기
생성된 저장 프로시저는 CALL 명령으로 호출할 수 있습니다.
mysql> call insert_demo('Chris',24);
Query OK, 1 row affected, 1 warning (0.00 sec)'Chris'라는 이름과 나이 24를 매개변수로 전달하여 한 건의 데이터가 성공적으로 삽입되었습니다.
4단계: 결과 확인하기
SELECT 문으로 테이블의 모든 레코드를 조회해 삽입된 데이터를 확인해 보겠습니다.
mysql> select * from DemoTable1928;
실행 결과는 다음과 같습니다.
+----+-------+------+ | Id | Name | Age | +----+-------+------+ | 1 | Chris | 24 | +----+-------+------+ 1 row in set (0.00 sec)
정리
지금까지 저장 프로시저를 사용해 테이블에 데이터를 삽입하는 방법을 알아보았습니다. 핵심 흐름은 다음과 같습니다.
① 구분자 변경 → ② CREATE PROCEDURE로 프로시저 정의 → ③ 구분자 복원 → ④ CALL로 프로시저 호출 → ⑤ SELECT로 결과 검증
이처럼 저장 프로시저를 활용하면 삽입 로직을 재사용할 수 있고, 애플리케이션 코드와 SQL을 분리하여 유지보수성도 크게 향상시킬 수 있습니다.