我有一个程序有问题 我打电话。
程序有两个循环, 一个连接到同一个网络中的其他数据库, 另一个连接到每个连接的数据, 但是问题在于它只从第一个连接获得第一批数据。 我不确定, 但是也许我在第二个循环中做错了什么, 忘记了某些东西。 这是第二次 I m 进行这样的操作, 第一次对 Ugh 复杂 。
这是程序守则
CREATE PROCEDURE `firians`.`sincronizarAgencias` ()
BEGIN
declare nomeAgencia varchar(255);
declare ultimaAgencia int default false;
declare terminouPicagens int default false;
declare agenciasCur cursor for select ip from agencia;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET ultimaAgencia = TRUE;
open agenciasCur;
nomeAgenciasLoop: LOOP
FETCH agenciasCur INTO nomeAgencia;
IF ultimaAgencia THEN
close agenciasCur;
LEAVE nomeAgenciasLoop;
END IF;
SELECT nomeAgencia;
DROP VIEW IF EXISTS temp_agencia_view;
SET @query = CONCAT( CREATE VIEW temp_agencia_view as select data, idempregado, idsociedade, nif, tipo from ` , nomeAgencia, ` );
select @query;
PREPARE stmt from @query;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
blocoPicagens: BEGIN
declare newData DATETIME;
declare newIdEmpregado VARCHAR(45);
declare newIdSociedade bigint(20);
declare newNif varchar(15);
declare newTipo varchar(45);
declare ultimaPicagem int default false;
-- SELECT data, idempregado, idsociedade, nif, tipo from temp_agencia_view;
DECLARE picagensCursor cursor for select data, idempregado, idsociedade, nif, tipo from temp_agencia_view;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET ultimaPicagem := TRUE;
open picagensCursor;
picagensLoop: LOOP
fetch picagensCursor into newData, newIdEmpregado, newIdSociedade, newNif, newTipo;
IF ultimaPicagem THEN
-- SET ultimaPicagem := false;
close picagensCursor;
DROP VIEW IF EXISTS temp_agencia_view;
LEAVE picagensLoop;
END IF;
INSERT INTO `firians`.`assiduidade`(`data`,`idempregado`,`idsociedade`,`tipo`,`nif`)
VALUES
(newData, newIdEmpregado, newIdSociedade, newTipo, newNif);
INSERT INTO `firians`.`assiduidadebackup`(`data`,`idempregado`,`idsociedade`,`tipo`,`nif`)
VALUES
(newData, newIdEmpregado, newIdSociedade, newTipo, newNif);
set @updateRowQuery = CONCAT( DELETE FROM ` , nomeAgencia, ` WHERE idempregado = , newIdEmpregado, AND idsociedade = , newIdSociedade, AND tipo = , newTipo, AND data LIKE , newData, " ");
select @updateRowQuery;
PREPARE stmtUpdate from @updateRowQuery;
EXECUTE stmtUpdate;
DEALLOCATE PREPARE stmtUpdate;
END LOOP picagensLoop;
DROP VIEW IF EXISTS temp_agencia_view;
-- select * from temp_agencia_view;
END blocoPicagens;
END LOOP nomeAgenciasLoop;
DROP VIEW IF EXISTS temp_agencia_view;
END
你能帮我吗?
请注意,
埃尔卡斯