Просто хочу попросить вашей помощи относительно создания процедуры хранилища в базе данных MySQL. Это мой первый раз при создании процедуры магазина. Скорее всего, я использовал для создания представлений, но на этот раз мне нужно реализовать процедуру хранения в базе данных MySQL. Я здесь создал простой, но я думаю, что это излишне в заявлении. Есть ли кто-нибудь, кто может помочь мне сократить заявление? С этим, это может помочь мне изучить больше относительно хранимой процедуры. Пожалуйста, смотрите код для справки. Очень ценится с вашей помощью.
DELIMITER $$
USE `doris_master_data`$$
DROP PROCEDURE IF EXISTS `webserver_service_order`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE `webserver_service_order`(
IN xselection BIGINT(8),
IN xreceived_from_date BIGINT(8),
IN xreceived_to_date BIGINT(8))
BEGIN
IF xselection=0 THEN
SELECT DISTINCT
so.service_code,
sl.service_name,
xx.Total_Services
FROM
service_order so
INNER JOIN services_lists sl ON so.service_code=sl.service_code
LEFT OUTER JOIN
(
SELECT
a.service_code,
COUNT(DISTINCT CONCAT(a.service_code,'-',a.service_order_code)) AS Total_Services
FROM
service_order a
WHERE
(a.service_order_date_received BETWEEN xreceived_from_date AND xreceived_to_date)
AND a.service_code_is_active=1
AND a.requirement_code_is_active=1
GROUP BY a.service_code
) AS xx ON so.service_code=xx.service_code
WHERE
(so.service_order_date_received BETWEEN xreceived_from_date AND xreceived_to_date)
AND so.service_code_is_active=1
AND so.requirement_code_is_active=1;
ELSE
SELECT DISTINCT
so.service_code,
sl.service_name,
xx.Total_Services
FROM
service_order so
INNER JOIN services_lists sl ON so.service_code=sl.service_code
LEFT OUTER JOIN
(
SELECT
a.service_code,
COUNT(DISTINCT CONCAT(a.service_code,'-',a.service_order_code)) AS Total_Services
FROM
service_order a
WHERE
(a.service_order_date_received BETWEEN xreceived_from_date AND xreceived_to_date)
AND a.service_code_is_active=1
AND a.requirement_code_is_active=1
GROUP BY a.service_code
) AS xx ON so.service_code=xx.service_code
WHERE
so.service_code=xselection AND
(so.service_order_date_received BETWEEN xreceived_from_date AND xreceived_to_date)
AND so.service_code_is_active=1
AND so.requirement_code_is_active=1;
END IF;
END$$
DELIMITER ;