MySQL 스토어드 프로시저는 SQL 문과 프로그래밍 요소를 결합한 데이터베이스 객체입니다.
스토어드 프로시저는 여러 개의 SQL 문을 그룹화하고, 파라미터를 사용하여 입력 값을 전달하고, 결과를 반환하는 등의 작업을 수행할 수 있습니다.
이를 통해 코드의 재사용성을 높이고, 보안성을 강화하며, 데이터베이스 성능을 향상시킬 수 있습니다.
다음은 MySQL 스토어드 프로시저에 대한 자세한 설명과 예시입니다:
1. 스토어드 프로시저의 구조:
- 스토어드 프로시저는 `CREATE PROCEDURE` 문으로 생성됩니다.
프로시저는 이름, 파라미터, 변수, SQL 문, 제어 구문 등으로 구성됩니다.
- 프로시저는 `BEGIN`과 `END` 블록으로 감싸진 SQL 문의 집합입니다.
`BEGIN` 블록에서 변수를 선언하고 초기화하며, `END` 블록에서 결과를 반환하거나 필요한 작업을 수행합니다.
2. 파라미터와 변수:
- 스토어드 프로시저는 입력 파라미터와 출력 파라미터를 가질 수 있습니다.
파라미터는 프로시저에 전달되는 값이나 결과로 사용됩니다.
- 프로시저 내에서 사용되는 변수는 `DECLARE` 문을 사용하여 선언됩니다.
변수는 프로시저 실행 중에 값을 저장하고 조작하는 데 사용됩니다.
3. SQL 문과 제어 구문:
- 스토어드 프로시저 내에서 다양한 SQL 문을 사용할 수 있습니다.
SELECT, INSERT, UPDATE, DELETE 등의 SQL 문을 사용하여 데이터베이스 작업을 수행할 수 있습니다.
- 제어 구문인 IF, WHILE, LOOP 등을 사용하여 조건부 논리와 반복 작업을 수행할 수 있습니다.
4. 예시:
- 다음은 주문 테이블에서 특정 고객의 주문 내역을 조회하는 스토어드 프로시저의 예시입니다:
DELIMITER //
CREATE PROCEDURE GetCustomerOrders(IN customerId INT)
BEGIN
DECLARE totalOrders INT;
DECLARE customerName VARCHAR(100);
SELECT COUNT(*) INTO totalOrders FROM orders WHERE customer_id = customerId;
IF totalOrders > 0 THEN
SELECT name INTO customerName FROM customers WHERE id = customerId;
SELECT * FROM orders WHERE customer_id = customerId;
ELSE
SELECT 'No orders found for the customer.';
END IF;
END //
DELIMITER ;
위의 예시에서는 `GetCustomerOrders`라는 스토어드 프로시저를 생성합니다.
이 프로시저는 `customerId`라는 입력 파라미터를 받아 해당 고객의 주문 내역을 조회합니다.
`totalOrders` 변수를 사용하여 주문 수를 계산하고, `customerName` 변수를 사용하여 고객 이름을 조회합니다.
IF 문을 사용하여 주문이 있는 경우 해당 주문 내역을 조회하고, 주문이 없는 경우 메시지를 반환합니다.
스토어드 프로시저는 데이터베이스 로직을 단일 객체로 추상화하여 유지 관리 및 재사용이 용이하게 해주는 강력한 도구입니다.
복잡한 데이터베이스 작업이 필요한 경우 스토어드 프로시저를 사용하여 효율적이고 일관된 코드를 작성할 수 있습니다.
'SQL > MYSQL' 카테고리의 다른 글
[MYSQL] 전체 텍스트 검색 방법 (0) | 2023.06.19 |
---|---|
[MYSQL] 트리거 사용 방법 (0) | 2023.06.15 |
[MYSQL] 커서 사용 방법 (0) | 2023.06.15 |
[MYSQL] 스토어드 함수 사용 방법 (0) | 2023.06.15 |
[MYSQL] 인덱스가 필요한 경우와 필요 없는 경우 (0) | 2023.06.15 |
[MYSQL] 인덱스의 성능 비교하기 (0) | 2023.06.15 |
[MYSQL] 인덱스 생성, 변경, 삭제 방법 (0) | 2023.06.13 |
[MYSQL] 인덱스의 내부 작동에 대한 설명 (0) | 2023.06.13 |