工作中自定义的mysql函数

DELIMITER $$

USE `jira`$$

DROP FUNCTION IF EXISTS `cal_exception_func`$$

CREATE DEFINER=`jirauser`@`%` FUNCTION `cal_exception_func`(
    originalCalTime VARCHAR(255),
    actualTime VARCHAR(255),
    operator VARCHAR(255),
    sprintName VARCHAR(255),
    taskStatus VARCHAR(255),
    startTime VARCHAR(255),
    completedTime VARCHAR(255),
    issuetype VARCHAR(255),
    bugType VARCHAR(255),
    bugEnvir VARCHAR(255),
    epicId VARCHAR(255)
    ) RETURNS TEXT CHARSET utf8 COLLATE utf8_bin
    DETERMINISTIC
BEGIN
         DECLARE v_exceptionResult TEXT;
    DECLARE v_currentDate DATETIME;
    SET v_currentDate = NOW();
    SET v_exceptionResult = '';
    
    -- 类型是故障才判断
    IF issuetype = 10004 THEN
	    -- 缺少bug类型分类
	    IF bugType IS NULL THEN
		SET v_exceptionResult = CONCAT(v_exceptionResult, '缺少bug类型分类,');
	    END IF;
	    -- 缺少bug环境分类
	    IF bugEnvir IS NULL THEN
		SET v_exceptionResult = CONCAT(v_exceptionResult, '缺少bug环境分类,');
	    END IF;
     END IF;	    
	    
    -- 缺少预计开始时间
    IF startTime IS NULL OR startTime = '' THEN
        SET v_exceptionResult = CONCAT(v_exceptionResult, '缺少预计开始日期,');
    ELSE 
           IF startTime  BETWEEN '2023-10-07 00:00:00' AND '2023-10-19 23:59:59' THEN 
             IF operator IS  NULL OR operator= '' THEN
		SET v_exceptionResult = CONCAT(v_exceptionResult, '未指派经办人,');   
	     END IF;
        
        END IF;
    END IF;
    
   
     	    
    
   -- 任务未关联冲刺,不是子任务才去判断
    IF issuetype != 10003 THEN
	    IF sprintName IS NULL THEN
		SET v_exceptionResult = CONCAT(v_exceptionResult, '未关联冲刺,');
	    END IF;
    END IF;
    
    -- 任务未关联需求
    IF issuetype!=10001 AND issuetype!=10003  THEN
       IF epicId IS NULL OR epicId ='' THEN
        SET v_exceptionResult = CONCAT(v_exceptionResult, '未关联需求,');
        END IF;
    END IF;
    
    
    
    -- 已完成任务未填实际工时
    IF (taskStatus = '完成' OR taskStatus = 'Done') AND actualTime = 0 THEN
       SET v_exceptionResult = CONCAT(v_exceptionResult, '已完成任务未填实际工时,');
    END IF;
         
    
    -- 没有按照预计时间完成
    IF (taskStatus != '完成' AND  taskStatus != 'Done') 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 ;