procedure은 CALL 문법과 함께 호출해야하나 function은 CALL이 필요없다.
procedure은 RETURN이 필요없지만 function은 필요하다.
function안에서는 SELECT문법으로 테이블 값을 출력할 수 없다.
DETERMINISTIC 사용 이유
DETERMINISTIC으로 생성시, MySQL에서 이 함수가 입력값이 동일하면 출력값은 항상 동일하다는 것을 인지하고 단 1번만 이 함수를 호출해서 결과값으로 a컬럼을 검색한다. ⇒ 속도 측면에서 빠르다!
default는 NOT DETERMINISTIC
CREATE FUNCTION DB명.함수이름(변수 변수데이터타입)
RETURNS 반환값데이터타입
DETERMINISTIC
BEGIN
RETURN 반환할 수식/값;
END
"원"을 "엔"으로 계산하는 수식을 자주 사용하기 위해 function으로 만들고 싶다.
DROP FUNCTION IF EXISTS mart.yen;
delimiter $$
$$
CREATE FUNCTION mart.yen(won int)
RETURNS int
DETERMINISTIC
BEGIN
RETURN won * 0.1 + 50;
END
$$
delimiter ;