아래와 같이 가격이 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 ;