mysql新建函数
DELIMITER $$
USE `cc`$$
DROP FUNCTION IF EXISTS `cal_exception_func`$$
CREATE
/*[DEFINER = { user | CURRENT_USER }]*/
FUNCTION `jira`.`cal_exception_func`(
originalCalTime VARCHAR(255),
actualTime VARCHAR(255),
operator VARCHAR(255),
sprintName VARCHAR(255),
taskStatus VARCHAR(255),
startTime VARCHAR(255),
completedTime VARCHAR(255),
taskId VARCHAR(255)
) RETURNS TEXT DETERMINISTIC
/*LANGUAGE SQL
| [NOT] DETERMINISTIC
| { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
| SQL SECURITY { DEFINER | INVOKER }
| COMMENT 'string'*/
BEGIN
DECLARE v_exceptionResult TEXT;
DECLARE v_currentDate DATETIME;
SET v_currentDate = NOW();
SET v_exceptionResult = '';
-- 估时超过40小时
IF originalCalTime > 40 THEN
SET v_exceptionResult = CONCAT(v_exceptionResult, '估时超过40小时,');
END IF;
-- 实际工时超过了预估时间
IF actualTime > originalCalTime THEN
SET v_exceptionResult = CONCAT(v_exceptionResult, '实际工时超过了预估时间,');
END IF;
-- 未指定经办人
IF operator IS NULL THEN
SET v_exceptionResult = CONCAT(v_exceptionResult, '未指定经办人,');
END IF;
-- 任务未关联冲刺
IF sprintName IS NULL THEN
SET v_exceptionResult = CONCAT(v_exceptionResult, '任务未关联冲刺,');
END IF;
-- 任务未关联需求
IF taskId IS NULL THEN
SET v_exceptionResult = CONCAT(v_exceptionResult, '任务未关联需求,');
END IF;
-- 已完成任务未填实际工时
IF taskStatus = '完成' AND actualTime IS NULL THEN
SET v_exceptionResult = CONCAT(v_exceptionResult, '已完成任务未填实际工时,');
END IF;
-- 没有按照预计时间完成
IF taskStatus != '完成' AND completedTime < v_currentDate THEN
SET v_exceptionResult = CONCAT(v_exceptionResult, '没有按照预计时间完成,');
END IF;
-- 没有按照预计时间开始
IF startTime < v_currentDate AND taskStatus = '新建' THEN
SET v_exceptionResult = CONCAT(v_exceptionResult, '没有按照预计时间开始,');
END IF;
RETURN v_exceptionResult;
END$$
DELIMITER ;
调用 SELECT cal_exception_func('50', '30', 'operator', 'sprintName', 'taskStatus', '2023-09-24 00:00:00', '2023-09-25 00:00:00', 'taskId');
发表评论