-- 1. 회원의 이름으로 회원 아이디, 이름, 이메일을 조회하는 프로시저를 생성
-- 프로시저 생성
DELIMITER $$
CREATE PROCEDURE sp_member(IN memberName VARCHAR(100))
BEGIN
SELECT
m.m_id AS '회원 아이디',
m.m_name AS '이름',
m.m_email AS '이메일'
FROM
tb_member AS m
WHERE
m.m_name=memberName;
END $$
DELIMITER ;
-- 생성한 프로시저 호출
CALL sp_member('홍01');
-- 프로시저 삭제
DROP PROCEDURE sp_member;
/*
INTO문 : 사용자가 정의한 변수에 값을 대입하기 위해 사용한다.
[구문]
DECLARE num INT;
SELECT
age INTO num
FROM
*/
-- 2.회원의 아이디와 비밀번호를 입력하면 회원의 이메일을 조회하는 프로시저 생성
DELIMITER $$
CREATE PROCEDURE sp_login(IN userId VARCHAR(100),IN userPw VARCHAR(100))
BEGIN
SELECT
m.m_email AS '이메일'
FROM
tb_member AS m
WHERE
m.m_id=userId
And
m.m_pw=userPw;
END $$
DELIMITER ;
CALL sp_login('id001','pw001');
/*
IF문
[구문]
IF 조건 THEN
수행문
ELSEIF 조건 THEN
수행문
ELSE 조건 THEN
수행문
CASE문
[구문1]
CASE
WHEN 조건식1 THEN 결과값1
WHEN 조건식2 THEN 결과값2
ELSE
END
[구문2]
CASE 컬럼_이름
WHEN 조건식1 THEN 결과값1
WHEN 조건식2 THEN 결과값2
ELSE
END
*/
-- 3. 상품 가격에 따라 결과 조회
SELECT
g.g_code,
g.g_name,
(case
when g.g_price > 500000 then 'expensive'
when g.g_code < 100000 then 'cheep'
ELSE 'nomal'
end
) AS '상품_가치'
FROM
tb_goods AS g
ORDER BY g.g_price DESC;
-- 4. 나라 코드에 따라 결과 출력
SELECT
c.Name,
c.CountryCode,
(case CountryCode
when 'USA' then 'G2'
when 'CHN' then 'G2'
end
) AS 'Group of two'
FROM
city AS c;
-- 5.회원의 아이디를 입력 받아 회원의 권한을 조회하는 프로시저를 생성
-- IF문 사용
DROP PROCEDURE if EXISTS sp_power
Delimiter $$
CREATE PROCEDURE sp_power(IN userId VARCHAR(100))
BEGIN
select
m.m_id,
(case m.m_level
when 1 then '관리자'
when 2 then '판매자'
when 3 then '구매자'
ELSE '권한없음'
END)
AS '권한'
from
tb_member AS m
where
m.m_id=userId;
END $$
delimiter ;
DROP PROCEDURE if EXISTS sp_power
Delimiter $$
CREATE PROCEDURE sp_power(IN userId VARCHAR(10))
BEGIN
DECLARE userPower INT DEFAULT 0;
select
m.m_level INTO userPower
from
tb_member AS m
where
m.m_id=userId;
IF(userPower=1) THEN SELECT '관리자';
ELSEIF(userPower= 2) THEN SELECT '판매자';
ELSEIF(userPower=3) THEN SELECT '구매자';
ELSE SELECT '권한없음';
END IF;
END $$
delimiter ;
CALL sp_power('id003');