ํ๋ก๊ทธ๋๋ฐ ์ธ๊ณ๋ฅผ ํ๊ตฌํฉ์๋ค.
[ ํจ์ ์์ฑ ]
-- ์ํ๋ถ๋ฅ๋ช
์ ์ถ์ถํ๋ ํจ์ ์์ฑํ๊ธฐ
-- ํจ์ ๊ตฌ๋ฌธ ์์
Delimiter //
-- ์ฌ์ฉ์ ์ ์ํจ์
CREATE FUNCTION defGetLprodNm(paramGu VARCHAR(10))
-- ๋ฆฌํดํ์
์ ์
RETURNS VARCHAR(50)
-- character set UTF8MB4
-- ํจ์ ๊ธฐ๋ฅ ์์
BEGIN
-- ๋ฐํํ ๊ฐ์ ์ ์ฅํ ๋ณ์ ์ ์ธ
DECLARE result VARCHAR(50);
-- ์ํ๋ถ๋ฅ๋ช
์ ์ถ์ถํ๋ sql ๊ตฌ๋ฌธ ์์ฑ
select lprod_nm INTO result
FROM lprod
WHERE lprod_gu = paramGu;
-- ๋ฐํํ๊ธฐ
RETURN result;
-- ํจ์ ๊ธฐ๋ฅ ์ข
๋ฃ
END //
-- ํจ์ ์ ์ฒด ๊ตฌ๋ฌธ ์ข
๋ฃ
Delimiter ;
[ ์กฐ๊ฑด ]
-- ์ํ๋ถ๋ฅ๋ช
์ ์ถ์ถํ๋ ํจ์ ์์ฑํ๊ธฐ
-- ์์ฑํ ํจ์ ํธ์ถํ์ฌ ์ฒ๋ฆฌํ๊ธฐ
[ ์์ฑ ์ฝ๋ ]
SELECT Prod_name,
Prod_lgu,
defGetLprodNm(prod_lgu) AS lprod_nm
FROM prod;
[ ๊ฒฐ๊ณผ ]
[ ํจ์ ์์ฑ ]
/*
๋จ์ฑ/์ฌ์ฑ ์ถ์ถํ๊ธฐ
*/
Delimiter //
CREATE FUNCTION udfGetMenWomen(paramNum INT)
-- ๋ฆฌํด ํ์
์ ์
RETURNS VARCHAR(4)
BEGIN
-- ๋ฐํํ ๋ณ์ ์ ์ธ
DECLARE result VARCHAR(4);
-- ๋จ์ฌ ๊ตฌ๋ถ์ ์ํ ์กฐ๊ฑด๋ฌธ ์ฒ๋ฆฌ
if MOD(SUBSTRING(paramNum, 1, 1), 2) = 0 Then
SET result = '์ฌ์ฑ';
else
SET result = '๋จ์ฑ';
END if;
RETURN result;
END //
Delimiter ;
[ ์กฐ๊ฑด ]
-- [๋ฌธ์ ]
-- ์ฑ๋ณ์ ์กฐํํ๋ ํจ์ ์์ฑํ๊ธฐ
-- ์กฐํ ์ปฌ๋ผ : ํ์ ์ด๋ฆ, ์ฑ๋ณ ์กฐํํ๊ธฐ
-- ์ฑ๋ณ์ ๋จ์ฑ or ์ฌ์ฑ์ผ๋ก ์กฐํ
-- ํจ์ ์ด๋ฆ : udfGetMenWomen
-- ํจ์ ๊ตฌ๋ฌธ ์์
[ ์์ฑ ์ฝ๋ ]
SELECT Mem_name,
udfGetMenWomen(Mem_regno1) AS ์ฑ๋ณ
FROM member;
[ ๊ฒฐ๊ณผ ]
[ ํจ์ ์์ฑ ]
/*
์ ๊ท์ฃผ๋ฌธ๋ฒํธ ๋ฐ๊ธํ๊ธฐ
*/
Delimiter //
CREATE FUNCTION udfGetNewCartNo ()
-- ๋ฆฌํด ํ์
์ ์
RETURNS VARCHAR(13)
BEGIN
-- ๋ฐํํ ๋ณ์ ์ ์ธ
DECLARE result VARCHAR(13);
SELECT If(MAX(cart_no) IS not NULL,
MAX(cart_no)+1,
concat(REPLACE(CURDATE(), '-', ''), '00001')) INTO result
FROM cart
WHERE SUBSTRING(cart_no, 1, 8) = CURDATE();
RETURN result;
END //
Delimiter ;
[ ์กฐ๊ฑด ]
-- [๋ฌธ์ ]
-- ์ค๋ ์๋ก์ด ์ฃผ๋ฌธ์ด ๋ฐ์ํ์ต๋๋ค.
-- ์ ๊ท์ฃผ๋ฌธ๋ฒํธ๋ฅผ ๋ฐ๊ธํ๋ ํจ์๋ฅผ ์์ฑํด ์ฃผ์ธ์
-- ํจ์์ด๋ฆ : udfGetNewCartNo()
[ ์์ฑ ์ฝ๋ ]
SELECT udfGetNewCartNo();
[ ๊ฒฐ๊ณผ ]
[ View : ๊ฐ์ํ ์ด๋ธ ]
-- ์์ฃผ ์ฌ์ฉ๋๊ฑฐ๋, SQL ๊ตฌ๋ฌธ์ด ๊ธด ๊ฒฝ์ฐ ์กฐํ ๋ชฉ์ ์ผ๋ก๋ง ์ฌ์ฉ
-- ๋ฏธ๋ฆฌ ๊ฐ์ฒดํ ์์ผ์ ํ
์ด๋ธ์ฒ๋ผ ์ฌ์ฉํ๋ ๋ฐฉ์
-- ์กฐํ๋ง ๊ฐ๋ฅํ๋ฉฐ, ์
๋ ฅ/์์ /์ญ์ ๊ฐ ๋์ง ์์ต๋๋ค.
-- ์
๋ ฅ/์์ /์ญ์ ๊ฐ ๋๋ ๊ฒฝ์ฐ๋ ์์ง๋ง, view ์ฌ์ฉ๋ชฉ์ ์ ๋ง์ง ์์ต๋๋ค.
[ ๊ฐ์ํ ์ด๋ธ ์์ฑ ]
/* ๊ตฌ๋งค๋ด์ญ์ด ์๋ ํ์ view ์์ฑ */
Delimiter //
CREATE VIEW viewNoCartMember AS
-- ์กฐํํ Select๋ฌธ ์์ฑ
SELECT Mem_id, Mem_name
FROM member
WHERE mem_id NOT IN (SELECT cart_member
FROM cart)//
Delimiter ;
[ ์์ฑ ์ฝ๋ ]
-- View ์ฌ์ฉํ๊ธฐ
-- ์ฌ์ฉ๋ฒ : ํ
์ด๋ธ๊ณผ ๋์ผ
SELECT *
FROM viewnocartmember;
[ ๊ฒฐ๊ณผ ]
[ ์ ์ฅํ๋ก์์ (Stored Procedure; sp) ]
-- ํ๋ก๊ทธ๋จ ์์ญ์ด ์๋, DB์์ฒด์์ SQL ๊ตฌ๋ฌธ์ ๊ด๋ฆฌํ๊ณ ์ ํ ๋ ์ฌ์ฉ
-- ๋ฐ์ดํฐ๋ฒ ์ด์ค์ SQL ๊ตฌ๋ฌธ์ ๊ฐ์ฒดํํ์ฌ ํธ์ถ๋ฐฉ์์ผ๋ก๋ง ์ฌ์ฉํ๋ ๋ฐฉ์
[ ํ๋ก์์ ์์ฑ ]
/* ๊ตฌ๋งค๋ด์ญ์ด ์๋ ํ์ ํ๋ก์์ ์์ฑ */
Delimiter //
CREATE PROCEDURE spNoCartMember ()
Begin
-- ์กฐํํ Select๋ฌธ ์์ฑ
SELECT Mem_id, Mem_name
FROM member
WHERE mem_id NOT IN (SELECT cart_member
FROM cart);
END //
Delimiter ;
[ ์์ฑ ์ฝ๋ ]
CALL spNoCartMember();
[ ๊ฒฐ๊ณผ ]
[ ์กฐ๊ฑด ]
-- [ ๋ฌธ์ ]
/*
๋ชจ๋ ๊ฑฐ๋์ฒ๋ณ ๋งค์ถ๊ธ์ก์ ์ดํฉ ์กฐํํ๊ธฐ
- ๋จ, 2005๋
๋ ์ฃผ๋ฌธ๋ด์ญ
- ์กฐํ ์ปฌ๋ผ : ๊ฑฐ๋์ฒ์ฝ๋, ๊ฑฐ๋์ฒ๋ช
, ๋งค์ถ๊ธ์ก์ ์ดํฉ
- ์ ์กฐํ์ ๋ํ select๋ฌธ์ view๋ก ์์ฑ
- ํ๋ก์์ ์์ ์์ ์์ฑํ view๋ฅผ ์ฌ์ฉํ์ฌ callํ์ฌ ๋ฐ์ดํฐ ์กฐํ
- view์ด๋ฆ : viewGetBuyerAll
- ํ๋ก์์ ์ด๋ฆ : spGetBuyerAll
*/
[ view ]
/*
๋ชจ๋ ๊ฑฐ๋์ฒ๋ณ ๋งค์ถ๊ธ์ก์ ์ดํฉ ์กฐํํ๊ธฐ
- view์ด๋ฆ : viewGetBuyerAll
*/
-- view
/* ๊ตฌ๋งค๋ด์ญ์ด ์๋ ํ์ view ์์ฑ */
Delimiter //
CREATE VIEW viewGetBuyerAll AS
SELECT buyer_id, buyer_name,
SUM(nvl(cart_qty * prod_sale, 0)) AS total
FROM buyer
LEFT OUTER JOIN prod
ON(buyer_id = prod_buyer)
LEFT OUTER JOIN cart
ON(prod_id = cart_prod
AND LEFT(cart_no, 4)='2005')
GROUP BY buyer_id, buyer_name //
Delimiter ;
[ ํ๋ก์์ ]
-- ํ๋ก์์
/* ๊ตฌ๋งค๋ด์ญ์ด ์๋ ํ์ ํ๋ก์์ ์์ฑ */
Delimiter //
CREATE PROCEDURE spGetBuyerAll ()
Begin
-- ์กฐํํ Select๋ฌธ ์์ฑ
SELECT *
FROM viewgetbuyerall;
END //
Delimiter ;
[ ์์ฑ ์ฝ๋ ]
SELECT buyer_id, buyer_name,
SUM(nvl(cart_qty * prod_sale, 0)) AS total
FROM buyer
LEFT OUTER JOIN prod
ON(buyer_id = prod_buyer)
LEFT OUTER JOIN cart
ON(prod_id = cart_prod
AND LEFT(cart_no, 4)='2005')
GROUP BY buyer_id, buyer_name;
SELECT buyer_id, prod_name
FROM viewgetbuyerall INNER JOIN prod
ON(buyer_id = prod_buyer);
CALL spGetBuyerAll();
[ ๊ฒฐ๊ณผ ]