DELIMITER // CREATE OR REPLACE PROCEDURE get_div_issue_data( IN p_div_type VARCHAR(1), -- a->e IN p_token VARCHAR(100) ) /* Function : 獲取問題分配資料 Description: 根據使用者token和問題類型返回不同分類的問題資料 取得指定 div 的資料, 目前分為 A*分配給我的(尚未解決) B*尚未分配 C*我回報尚未解決 D*我回報且已解決 E*被我解決的(30日內) Build Date : 2023/07/19 (MariaDB 版本) */ BEGIN DECLARE v_userid VARCHAR(100); DECLARE v_err_code SMALLINT; DECLARE v_err_msg VARCHAR(100); -- 初始化變數 SET v_err_code = 0; SET v_err_msg = 'ok'; -- 根據token獲取userid SELECT userid INTO v_userid FROM sys_users WHERE token = p_token LIMIT 1; IF v_userid IS NULL OR v_userid = '' THEN SET v_err_code = 4; SET v_err_msg = '原密碼輸入錯誤, 請重新輸入'; SELECT v_err_code AS code, v_err_msg AS msg; ELSE SELECT v_err_code AS code, v_err_msg AS msg; -- 根據不同類型返回不同資料 CASE UPPER(p_div_type) WHEN 'A' THEN -- 分配給我的(未解決) SELECT * FROM v_div_issue l WHERE l.responsible = v_userid AND (l.issue_status <> '2' AND l.issue_status <> '8'); WHEN 'B' THEN -- 尚未分配 SELECT * FROM v_div_issue l WHERE IFNULL(l.responsible, '') = ''; WHEN 'C' THEN -- 由我回報的(未解決) SELECT * FROM v_div_issue l WHERE l.raised_by = v_userid AND (l.issue_status <> '2' AND l.issue_status <> '8'); WHEN 'D' THEN -- 我回報且已解決 SELECT * FROM v_div_issue l WHERE l.raised_by = v_userid AND (l.issue_status = '2' OR l.issue_status = '8'); ELSE -- 被我解決的(30日內) SELECT * FROM v_div_issue l WHERE l.responsible = v_userid AND (l.issue_status = '2' OR l.issue_status = '8') AND DATEDIFF(CURDATE(), finish_date) <= 30; END CASE; END IF; END // DELIMITER ;