salix/db/routines/vn/procedures/workerDisableAll.sql

37 lines
821 B
SQL

DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`workerDisableAll`()
BEGIN
DECLARE done BOOL DEFAULT FALSE;
DECLARE vUserFk INT;
DECLARE rs CURSOR FOR
SELECT b.workerFk
FROM business b
JOIN vn.worker w ON w.id = b.workerFk
JOIN account.account a ON a.id = b.workerFk
LEFT JOIN (SELECT b.workerFk
FROM business b
WHERE (ended IS NULL OR ended >=util.VN_CURDATE())
)sub ON sub.workerFk = a.id
LEFT JOIN vn.workerDisableExcluded wd ON wd.workerFk = b.workerFk
WHERE sub.workerFk IS NULL
AND wd.workerFk IS NULL
GROUP BY w.id;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
OPEN rs;
FETCH rs INTO vUserFk;
WHILE NOT done DO
CALL workerDisable(vUserFk);
FETCH rs INTO vUserFk;
END WHILE;
CLOSE rs;
END$$
DELIMITER ;