generated from Sithas/conan_template
64 lines
1.7 KiB
SQL
64 lines
1.7 KiB
SQL
DELIMITER $$
|
|
|
|
CREATE PROCEDURE `up_and_down`.`fill_treatment_schemes`()
|
|
BEGIN
|
|
DECLARE done INT DEFAULT 0;
|
|
DECLARE v_uts_uuid CHAR(36);
|
|
DECLARE v_user_uuid CHAR(36);
|
|
DECLARE v_count INT;
|
|
DECLARE v_i INT;
|
|
DECLARE v_med_uuid CHAR(36);
|
|
|
|
-- курсор по всем схемам лечения пользователей
|
|
DECLARE cur CURSOR FOR
|
|
SELECT uuid, user_uuid
|
|
FROM `up_and_down`.`user_treatment_schemes`;
|
|
|
|
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
|
|
|
|
OPEN cur;
|
|
|
|
read_loop: LOOP
|
|
FETCH cur INTO v_uts_uuid, v_user_uuid;
|
|
IF done = 1 THEN
|
|
LEAVE read_loop;
|
|
END IF;
|
|
|
|
-- случайное количество препаратов от 1 до 5
|
|
SET v_count = FLOOR(RAND() * 5) + 1;
|
|
SET v_i = 0;
|
|
|
|
meds_loop: WHILE v_i < v_count DO
|
|
-- случайный препарат из уже существующих medications
|
|
SELECT m.uuid
|
|
INTO v_med_uuid
|
|
FROM `up_and_down`.`medications` m
|
|
ORDER BY RAND()
|
|
LIMIT 1;
|
|
|
|
-- чтобы не было дублей (один и тот же препарат в одной схеме)
|
|
IF NOT EXISTS (
|
|
SELECT 1
|
|
FROM `up_and_down`.`treatment_schemes` ts
|
|
WHERE ts.user_treatment_schemes_uuid = v_uts_uuid
|
|
AND ts.medication_uuid = v_med_uuid
|
|
) THEN
|
|
INSERT INTO `up_and_down`.`treatment_schemes` (
|
|
`user_treatment_schemes_uuid`,
|
|
`medication_uuid`
|
|
) VALUES (
|
|
v_uts_uuid,
|
|
v_med_uuid
|
|
);
|
|
SET v_i = v_i + 1;
|
|
END IF;
|
|
END WHILE;
|
|
END LOOP;
|
|
|
|
CLOSE cur;
|
|
END$$
|
|
|
|
DELIMITER ;
|
|
|
|
CALL `up_and_down`.`fill_treatment_schemes`();
|