본문 바로가기
Study/프로그래밍 공부

mySQL 프로시저 함수 예제

by prlkt5200 2024. 9. 25.
반응형
set global log_bin_trust_function_creators=1;
-- 함수를 만들려면 1로 세팅해야한다
use cookdb;

drop function if exists userfunc;
delimiter //
-- 기본적인 프로시저 함수 사용예제입니다.
create function userfunc(value1 int, value2 int)
returns int
begin
return value1 + value2;
end //

delimiter ;

select userfunc(100,200)

 

 

 USE cookDB;
-- function을 만드는 예제이다
 DROP FUNCTION IF EXISTS getAgeFunc;
 DELIMITER $$ 
 -- procedure랑 만드는 게 비슷하다
 -- 다만 차이가 있는데, function은 리턴하기에 select * from  테이블이름 같이 다수의 값을 가져올 수는 없음
 -- 그리고 procedure 내부에서만 function은 호출 가능하지만 역은 x
 
 CREATE FUNCTION getAgeFunc(bYear INT) -- 매개값 리턴값이랑 헷갈리지말기
 RETURNS INT 
 BEGIN 
 DECLARE age INT;
 SET age = YEAR(CURDATE()) - bYear;
 RETURN age;
 END $$ 
 DELIMITER ;

SELECT getAgeFunc(1979getAgeFuncgetAgeFunc);
SELECT getAgeFunc(1979) INTO @age1979;
SELECT getAgeFunc(1997) INTO @age1997;
SELECT CONCAT('1997년과 1979년의 나이차 ==> ', (@age1979-@age1997));
select userid, usrname , getagefunc(birthyear) as 만나이 from usertbl;

SHOW CREATE FUNCTION getAgeFunc;
DROP FUNCTION getAgeFunc;

 

drop function if exists testfunc;

delimiter //



create function testfunc(price int)
returns decimal(7,2)
begin
DECLARE rprice decimal(7,2);

if  price >= 30000 then
	set rprice = price * 0.1;
    else 
    set rprice = price * 0.05;
    end if;
return rprice;
end //


delimiter ;
select bookid,bookname,price, testfunc(price) as 이익 from booktbl;

SHOW CREATE FUNCTION testfunc;
DROP FUNCTION testfunc;

 

반응형