--Tenho a seguinte situação:
--O ROBO PEGA 50 REGISTROS POR VEZ ORDENADOS POR ID E SEQUENCIA(QUE PODEM CHEGAR ATÉ 9) E ENVIA PARA INTEGRACAO
DECLARE
CURSOR C_ENVIO IS
SELECT ID, DATA, TX_1, TX_2, TX_3, ID_SEQUENCIA
FROM (SELECT ID, DATA, TX_1, TX_2, TX_3, ID_SEQUENCIA
FROM TB_ENVIO
WHERE ENVIO = 1
ORDER BY 1, 6) TESTE
WHERE ROWNUM <= 50;
BEGIN
OPEN C_ENVIO;
LOOP
FETCH C_ENVIO
INTO C_ENVIO;
EXIT WHEN C_ENVIO%NOTFOUND;
-- PREENCHO UMA TAB DE RETORNO E
.. . .. . .. .........
--DEPOIS ATUALIZO O ENVIO PARA 2 PARA não PEGAR NA PROXIMA VEZ QUE FOR ACIONADO PELO ROBO.....
UPDATE TB_ENVIO
SET ENVIO = 2
WHERE ID = TAB.ID AND ID_SEQUENCIA = TAB.ID_SEQUENCIA;
COMMIT;
END LOOP;
CLOSE C_ENVIO;
END;
--Duvida...?
--Quando executar 3 threads ao mesmo tempo não vai pegar a mesma informacao nos 3 cursores?
--Como faço um controle para não encavalar os dados - Existe algum tipo de controle?