79 lines
1.4 KiB
SQL
79 lines
1.4 KiB
SQL
DELIMITER $$
|
|
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `stock`.`log_sync`(vSync BOOL)
|
|
proc: BEGIN
|
|
DECLARE vDone BOOL;
|
|
DECLARE vHasPendingSync BOOL;
|
|
DECLARE vTableName VARCHAR(255);
|
|
DECLARE vTableId VARCHAR(255);
|
|
DECLARE vInboundFk INT;
|
|
DECLARE vOutboundFk INT;
|
|
|
|
DECLARE cInbound CURSOR FOR
|
|
SELECT id FROM inbound
|
|
WHERE !isSync
|
|
ORDER BY dated;
|
|
|
|
DECLARE cOutbound CURSOR FOR
|
|
SELECT id FROM outbound
|
|
WHERE !isSync
|
|
ORDER BY dated;
|
|
|
|
DECLARE CONTINUE HANDLER FOR NOT FOUND
|
|
SET vDone = TRUE;
|
|
|
|
DECLARE EXIT HANDLER FOR SQLEXCEPTION
|
|
BEGIN
|
|
ROLLBACK;
|
|
RESIGNAL;
|
|
END;
|
|
|
|
-- Attaches desync inbounds
|
|
|
|
REPEAT
|
|
OPEN cInbound;
|
|
SET vHasPendingSync = FALSE;
|
|
|
|
inboundLoop: LOOP
|
|
SET vDone = FALSE;
|
|
FETCH cInbound INTO vInboundFk;
|
|
|
|
IF vDone THEN
|
|
LEAVE inboundLoop;
|
|
END IF;
|
|
|
|
START TRANSACTION;
|
|
CALL inbound_sync(vInboundFk);
|
|
COMMIT;
|
|
|
|
SET vHasPendingSync = TRUE;
|
|
END LOOP;
|
|
|
|
CLOSE cInbound;
|
|
UNTIL !vHasPendingSync END REPEAT;
|
|
|
|
-- Attaches desync outbounds
|
|
|
|
REPEAT
|
|
OPEN cOutbound;
|
|
SET vHasPendingSync = FALSE;
|
|
|
|
outboundLoop: LOOP
|
|
SET vDone = FALSE;
|
|
FETCH cOutbound INTO vOutboundFk;
|
|
|
|
IF vDone THEN
|
|
LEAVE outboundLoop;
|
|
END IF;
|
|
|
|
START TRANSACTION;
|
|
CALL outbound_sync(vOutboundFk);
|
|
COMMIT;
|
|
|
|
SET vHasPendingSync = TRUE;
|
|
END LOOP;
|
|
|
|
CLOSE cOutbound;
|
|
UNTIL !vHasPendingSync END REPEAT;
|
|
END$$
|
|
DELIMITER ;
|