DB/SQL

[MySQL] 스토어드 프로시저 입출력 매개변수 활용

bskyvision.com 2022. 10. 24. 20:00

스토어드 프로시저에 입력 매개변수와 출력 매개변수를 활용하는 예제입니다. 저는 다음과 같이 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] 스토어드 프로시저 사용법 및 사용이유