MySQL에서는 SELECT 문을 저장 프로시저(Stored Procedure) 안에 넣어두고, 필요할 때마다 간단한 CALL 명령으로 테이블의 전체 레코드를 손쉽게 조회할 수 있습니다. 이번 글에서는 테이블 생성부터 저장 프로시저 작성 및 호출까지 전체 과정을 단계별로 살펴보겠습니다.
1. 테이블 생성하기
먼저 예제에 사용할 테이블을 생성합니다.
mysql> create table DemoTable1933
(
ClientName varchar(20)
);
Query OK, 0 rows affected (0.00 sec)
2. 샘플 데이터 삽입하기
INSERT 명령을 사용해 몇 개의 레코드를 입력합니다.
mysql> insert into DemoTable1933 values('Chris Brown');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1933 values('David Miller');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1933 values('Adam Smith');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1933 values('John Doe');
Query OK, 1 row affected (0.00 sec)
3. SELECT 문으로 레코드 확인하기
저장 프로시저를 만들기 전에, 먼저 일반적인 SELECT 문으로 테이블의 모든 레코드가 정상적으로 저장되었는지 확인합니다.
mysql> select * from DemoTable1933;
실행 결과는 다음과 같습니다.
+--------------+ | ClientName | +--------------+ | Chris Brown | | David Miller | | Adam Smith | | John Doe | +--------------+ 4 rows in set (0.00 sec)
4. 저장 프로시저 생성하기
이제 SELECT 문을 포함하는 저장 프로시저를 생성합니다. 프로시저 본문 내의 세미콜론(;)이 MySQL 클라이언트의 구분자와 충돌하지 않도록, DELIMITER 명령으로 구분자를 임시 변경하는 점에 유의하세요.
mysql> delimiter //
mysql> create procedure display_all_records()
begin
select * from DemoTable1933;
end
//
Query OK, 0 rows affected (0.00 sec)
mysql> delimiter ;
위 예제에서 display_all_records()라는 이름의 프로시저가 생성되며, 이 프로시저를 호출하면 DemoTable1933 테이블의 모든 레코드가 반환됩니다.
5. 저장 프로시저 호출하기
생성된 저장 프로시저는 CALL 명령으로 실행할 수 있습니다.
mysql> call display_all_records();
실행 결과는 다음과 같습니다.
+--------------+ | ClientName | +--------------+ | Chris Brown | | David Miller | | Adam Smith | | John Doe | +--------------+ 4 rows in set (0.00 sec) Query OK, 0 rows affected (0.00 sec)
마무리
이처럼 자주 사용하는 조회 쿼리를 저장 프로시저로 만들어 두면, 매번 긴 SQL 문을 직접 작성하지 않아도 되고 쿼리의 재사용성과 관리 효율이 크게 향상됩니다. 특히 반복적으로 동일한 조회 작업을 수행하는 애플리케이션 환경에서 저장 프로시저는 코드 중복을 줄이고 일관성을 유지하는 데 매우 유용합니다.