새소식

Database/MySQL

[MySQL] "파라미터"를 사용해서 stored procedure 생성

  • -

아래와 같이 가격이 6000이상인 product를 뽑아내는 procedure를 만든다면, 7000이상인 product를 필터링할 때는 새로운 procedure를 만들어주어야하는 번거로움이 있다.

delimiter $$
$$
CREATE PROCEDURE mart.get_6000_over()
BEGIN
	SELECT * FROM product WHERE 가격 > 6000;
END
$$
delimiter ;

 

 

IN 파라미터 

파라미터를 사용하면 이런 문제를 해결할 수 있다!

DROP PROCEDURE IF EXISTS mart.get_all;

delimiter $$
$$
CREATE PROCEDURE mart.get_all(cost int)
BEGIN
	SELECT * FROM product WHERE 가격 > cost;
END
$$
delimiter ;

CALL mart.get_all(7000);

 

 

OUT 파라미터 

OUT 파라미터는 procedure 안에 데이터를 넣는 IN 파라미터와 다르게 procedure안의 데이터를 밖에서 사용하고 싶을 때 사용한다.

파라미터 명 앞에 OUT을 붙여주어야 한다.

잘 사용되지는 않으므로 참고 정도로만 알아두면 좋다.

delimiter $$
$$
CREATE PROCEDURE mart.get_all(OUT cost int)
BEGIN
	SET cost = 20;
END
$$
delimiter ;

 

CALL mart.get_all(@변수);
SELECT @변수;

 

 

 

 

728x90

'Database > MySQL' 카테고리의 다른 글

[MySQL] function  (0) 2023.03.22
[MySQL] 날짜&시간 데이터  (0) 2023.03.21
[MySQL] 변수 저장 (@, DECLARE)  (0) 2023.03.12
[MySQL] stored procedure  (0) 2023.03.12
[MySQL] 가상 테이블 view  (0) 2023.03.09
Contents