mysql创建存储过程案例

DELIMITER $$

USE `ccc`$$

DROP PROCEDURE IF EXISTS `cal_exception`$$

CREATE DEFINER=`jirauser`@`%` PROCEDURE `cal_exception`(IN originalCalTime VARCHAR(255),
    IN actualTime VARCHAR(255),
    IN operator VARCHAR(255),
    IN sprintName VARCHAR(255),
    IN taskStatus VARCHAR(255),
    IN startTime VARCHAR(255),
    IN completedTime VARCHAR(255),
    IN taskId VARCHAR(255),
    OUT v_exceptionResult TEXT
    )
BEGIN
    DECLARE v_currentDate DATETIME;
          SET v_exceptionResult = '';
         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;
    -- 这里可以继续添加其他的条件检查...
    -- 返回异常结果
    END$$

DELIMITER ;

调用


call cal_exception()