Minha procedure busca apenas um registro da tabela. MYSQL FETCH REPEAT
Bom dia , estou usando um repeat para percorrer todos os registros da minha tabela porém ele busca só o primeiro e finaliza.
BEGIN-- INICIO DA ESTRUTURA QUE FILTRA OS EXAMES VINCULADOS AO RISCO DO SETOR
DECLARE DONE9 INT DEFAULT 0;
DECLARE CUR9 CURSOR FOR SELECT R.ID_RISCO FROM RISCO_SETOR_EMP R WHERE R.ID_SET_EMP=CODIGO_SETOR AND R.CODCVN=COD_EMPRESA AND ATIVO="S" ;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET DONE9=1;
SET DONE9:=0;
OPEN CUR9;
FETCH CUR9 INTO CODIGO_RISCO;
REPEAT
BEGIN -- EXAMES VINCULADOS AOS RISCOS DO SETOR
DECLARE DONE10 INT DEFAULT 0;
DECLARE CUR10 CURSOR FOR SELECT E.CODEXAME FROM EXAME_RISCO E WHERE CODRISCO=CODIGO_RISCO AND E.ATIVO="S";
DECLARE CONTINUE HANDLER FOR NOT FOUND SET DONE10=1;
--ELE BUSCA APENAS UM REGISTRO DESSA TABELA SENDO QUE TENHO 3 REGISTROS
OPEN CUR10;
REPEAT
FETCH CUR10 INTO CODIGO_EXAME_VINCULADO_RISCO;
SET WDATA_PROXIMO:=NULL;
SET DATA_PROXIMO_EXAME:=NULL;
IF CODIGO_EXAME_VINCULADO_RISCO IS NOT NULL THEN
SELECT COUNT(*) FROM PCMSO_EXA_CLI P INNER JOIN EXAME_COMPL E ON(P.ID_EXAME=E.ID_EXAME) INNER JOIN TABGERALCOD T ON(P.TIPO_EXAME=T.CODIGO AND T.CODTAB=31 AND T.DESCRICAO<>'Demissional') WHERE E.CODCLI=CODIGO_FUNCIONARIO AND E.COD_EXAME=CODIGO_EXAME_VINCULADO_RISCO ORDER BY E.DTAPROXEXA DESC LIMIT 0,1 INTO TROUXE_REGISTRO;
SET WDATA_PROXIMO:=DATA_ADMISSAO;
IF TROUXE_REGISTRO>0 THEN
SELECT E.DTAPROXEXA FROM PCMSO_EXA_CLI P INNER JOIN EXAME_COMPL E ON(P.ID_EXAME=E.ID_EXAME) INNER JOIN TABGERALCOD T ON(P.TIPO_EXAME=T.CODIGO AND T.CODTAB=31 AND T.DESCRICAO<>'Demissional') WHERE E.CODCLI=CODIGO_FUNCIONARIO AND E.COD_EXAME=CODIGO_EXAME_VINCULADO_RISCO ORDER BY E.DTAPROXEXA DESC LIMIT 0,1 INTO DATA_PROXIMO_EXAME;
SET WDATA_PROXIMO:=DATA_PROXIMO_EXAME;
END IF;
IF ((DATA_PROXIMO_EXAME IS NULL)AND(TROUXE_REGISTRO<=0)) THEN
SELECT COUNT(*) FROM EXAMES_TMP T WHERE T.CODCONCO=CODIGO_FUNCIONARIO AND T.CODCVN=COD_EMPRESA AND T.ID_EXAME=CODIGO_EXAME_VINCULADO_RISCO INTO TROUXE_REGISTRO;
IF TROUXE_REGISTRO<=0 THEN
INSERT INTO EXAMES_TMP(CODCONCO,ID_EXAME,CODCVN,DTAPROXEXA) VALUES(CODIGO_FUNCIONARIO,CODIGO_EXAME_VINCULADO_RISCO,COD_EMPRESA,F_DTAPROXEXA_ADM(CODIGO_FUNCIONARIO,CODIGO_FUNCAO,CODIGO_EXAME_EMPRESA,COD_EMPRESA,WDATA_PROXIMO));
END IF;
ELSE
SELECT COUNT(*) FROM EXAMES_TMP T WHERE T.CODCONCO=CODIGO_FUNCIONARIO AND T.CODCVN=COD_EMPRESA AND T.ID_EXAME=CODIGO_EXAME_VINCULADO_RISCO INTO TROUXE_REGISTRO;
IF TROUXE_REGISTRO<=0 THEN
INSERT INTO EXAMES_TMP(CODCONCO,ID_EXAME,CODCVN,DTAPROXEXA) VALUES(CODIGO_FUNCIONARIO,CODIGO_EXAME_VINCULADO_RISCO,COD_EMPRESA,WDATA_PROXIMO);
END IF;
END IF;-- FIM DO IF ELSE
END IF;-- FIM DO IF CODIGO_EXAME_VINCULADO_RISCO
SET CODIGO_EXAME_VINCULADO_RISCO:=NULL;
SET DATA_PROXIMO_EXAME:=NULL;
FETCH CUR10 INTO CODIGO_EXAME_VINCULADO_RISCO;
UNTIL DONE10 END REPEAT;
CLOSE CUR10;
SET CODIGO_EXAME_VINCULADO_RISCO:=NULL;
SET DATA_PROXIMO_EXAME:=NULL;
END;
SET CODIGO_RISCO:=NULL;
FETCH CUR9 INTO CODIGO_RISCO;
UNTIL DONE9 END REPEAT;
CLOSE CUR9;
SET CODIGO_RISCO:=NULL;
END;-- FIM DA ESTRUTURA QUE FILTRA OS EXAMES VINCULADOS AO RISCO DO SETORRodrigo Oliveira
Curtidas 0