[DB] function
in DB
MySQL functionμ μ΄μ©ν΄ μ§μ μΆμλ±λ‘ ν¨μ λ§λ€κΈ°
1.ν μ΄λΈ μμ±νκΈ°
CREATE TABLE `EMP_ATTEND` (
`ATTEND_YMD` VARCHAR(8) NOT NULL COLLATE 'utf8_bin',
`EMP_NO` VARCHAR(9) NOT NULL COLLATE 'utf8_bin'
)
COLLATE='utf8mb4_unicode_ci'
ENGINE=InnoDB;
κ°λ¨ν μ§μμΆμ ν μ΄λΈμ μμ±νλ€.
2.ν¨μ μμ±νκΈ°
DELIMITER $$
DROP FUNCTION IF EXISTS FNC_ATTEND;
CREATE FUNCTION FNC_ATTEND(attendType VARCHAR(10), empNo VARCHAR(10)) RETURNS BOOL
// CREATE FUNCTION "FUNCTION λͺ
" (λ³μκ°1 νμ
, λ³μκ°2 νμ
) RETURN νμ
BEGIN
//DECLARE λ³μλͺ
varchar(50); λ³μμ μΈ
DECLARE exist_flag INT;
DECLARE returnVal BOOL;
SET returnVal = FALSE;
-- μΆμ λ±λ‘
IF 'attend'= attendType THEN
SELECT COUNT(1)
INTO exist_flag // μ‘°νν 컬λΌκ°μΈ CODE_NAME μ λ³μμ λ£λλ€.
FROM EMP_ATTEND
WHERE EMP_NO = empNo
AND ATTEND_YMD = DATE_FORMAT(NOW(), '%Y%m%d')
;
IF exist_flag = 0 THEN
INSERT INTO EMP_ATTEND(
ATTEND_YMD
, EMP_NO
)VALUES(
DATE_FORMAT(NOW(), '%Y%m%d')
, empNo
);
SET returnVal = TRUE;
END IF;
END IF;
RETURN returnVal;
END $$
DELIMITER ;
functionμ argument 2κ°λ₯Ό μ§μ ν΄ μμ±νκ³ return κ°μ booleanμΌλ‘ λ°κ² λ€.
λ§μ½ argλ‘ λ€μ΄μ¨ 첫λ²μ§Έ κ°μ΄ λ¬Έμμ΄ βattendβ μΌκ²½μ° ν μ΄λΈμ ν΄λΉ μ§μμ μ€λλ μ§λ‘ μΆμν λ°μ΄ν°κ° μλμ§ νμΈνκ³ λ°μ΄ν°κ° μλ€λ©΄ μ€λλ μ§μ μ§μλ²νΈλ‘ κ°μ insertνλ€.
κ°μ΄ insert λ ν returnValμ κ°μ TRUEκ° λλ€.
3.ν¨μ νΈμΆνκΈ°
-- if return value 0 then false
-- else if return value 1 then true
SELECT FNC_ATTEND('attend', '1000');
ν¨μλ₯Ό μμ±νκ³ μμ κ°μ΄ νΈμΆμ ν΄λ³Έλ€. 2κ° νλκ°μ λ£κ³ νΈμΆνλ©΄ 1μ΄λ 0μ΄ λμ€κ² λλ€. 0μ΄ λμ€λ©΄ false, 1μ΄ λμ€λ©΄ trueμ΄λ€.
μ€ν μ΄λ ν¨μλ νλ‘μμ μ λ¬λ¦¬ IN OUT μ μ¬μ©ν μ μλ€.
μ€ν μ΄λ ν¨μμ νλΌλ―Έν°λ λͺ¨λ μ λ ₯ νλΌλ―Έν°λ‘ μ¬μ©λλ€.
μ€ν μ΄λ ν¨μλ RETURNSλ¬ΈμΌλ‘ λ°νν κ°μ λ°μ΄ν° νμμ μ§μ νκ³ , λ³Έλ¬Έ μμμλ RETURN λ¬ΈμΌλ‘ νλμ κ°μ λ°ν ν΄μΌ νλ€. μ€ν μ΄λ νλ‘μμ λ λ³λμ λ°ννλ κ΅¬λ¬Έμ΄ μκ³ OUT νλΌλ―Έν°λ₯Ό μ΄μ©ν΄μ κ°μ λ°ν ν μ μλ€.
μ€ν μ΄λ νλ‘μμ λ CALL λ‘ νΈμΆνμ§λ§ μ€ν μ΄λ ν¨μλ SELECT λ¬Έμ₯ μμμ νΈμΆλλ€.
μ€ν μ΄λ νλ‘μμ μμλ SELECT λ¬Έμ μ¬μ©ν μ μμ§λ§ , μ€ν μ΄λ ν¨μ μμμλ
μ§ν© κ²°κ³Όλ₯Ό λ°ννλ SELECT λ₯Ό μ¬μ©ν μ μλ€.
SELECT - INTO λ μ§ν© κ²°κ³Όλ₯Ό λ°ν νλ κ²μ΄ μλλ―λ‘ μμΈμ μΌλ‘ μ€ν μ΄λ ν¨μμμ μ¬μ©ν μ μλ€.
μ€ν μ΄λ νλ‘μμ λ μ¬λ¬ SQLλ¬Έμ΄λ μ«μ κ³μ° λ±μ λ€μν μ©λλ‘ μ¬μ©λμ§λ§ μ€ν μ΄λ ν¨μλ μ΄λ€ κ³μ°μ ν΅ν΄μ νλμ κ°μ λ°ν νλλ° μ£Όλ‘ μ¬μ©λλ€.
reference
μΆμ²: https://abc1211.tistory.com/136 [κΈΈμμ κ°λ°μ]