스토어드 프로시저에 입력 매개변수와 출력 매개변수를 활용하는 예제입니다. 저는 다음과 같이 EPL 득점 순위 테이블(2022년 10월 24일 기준)을 생성했습니다. 이 테이블의 이름은 epl입니다.
이제 선수의 이름을 "입력"받아서 그 선수의 골 개수를 "출력"해주는 간단한 스토어드 프로시저를 만들도록 하겠습니다.
DELIMITER $$
CREATE PROCEDURE epl_goal(
IN player CHAR(20),
OUT player_goal INT
)
BEGIN
SELECT goal INTO player_goal FROM epl WHERE name = player;
END $$
DELIMITER ;
이 프로시저의 이름은 epl_goal이고, 입력 매개변수는 선수 이름(player)이고, 출력 매개변수는 선수 골 개수(player_goal)입니다. BEGIN 다음에 있는 SELECT 문으로 조회된 goal이 출력 매개변수 player_goal로 전달됩니다. INTO가 사용되었죠?
이제 이 스토어드 프로시저를 호출해보겠습니다. 호출할 때 입력 매개변수의 인수("해리 케인")를 넣어줘야 하고, 출력 매개변수를 통해 출력될 값을 받을 변수("@goal")를 넣어줘야 합니다.
CALL epl_goal('해리 케인', @goal);
SELECT CONCAT("해리 케인 골 개수: ", @goal);
해리 케인 선수의 골 개수가 @goal에 담기고 다음 행에 있는 SELECT 문을 통해서 보여집니다.
부카요 사카 선수의 골 개수도 확인해보겠습니다.
CALL epl_goal('부카요 사카', @goal);
SELECT CONCAT("부카요 사카 골 개수: ", @goal);
관련 글
- [MySQL] 스토어드 프로시저로 데이터 insert 하기
- [MariaDB] 스토어드 프로시저 사용법 및 사용이유
'DB > SQL' 카테고리의 다른 글
[PostgreSQL] user 테이블 조회 방법 (0) | 2023.03.16 |
---|---|
[PostgreSQL] postgresql-client 설치 후 터미널에서 데이터베이스 접속 명령어 (0) | 2023.03.15 |
[MySQL] BEFORE 트리거로 잘못된 값 입력 방지하기 (0) | 2022.10.27 |
[MySQL] 트리거로 테이블에 입력/수정/삭제 발생할 때 로그 남기기 (0) | 2022.10.26 |
[MySQL] 스토어드 프로시저로 데이터 insert 하기 (0) | 2022.10.23 |
[MySQL] 인덱스 사용 판단 기준 (0) | 2022.10.22 |
[MySQL] 테이블 간 관계 맺기(primary key, foreign key) (1) | 2022.10.20 |
[MySQL] 인덱스 유무에 따른 데이터 조회 속도 차이 비교 (0) | 2022.10.19 |