- Este tópico contém 2 respostas, 3 vozes e foi atualizado pela última vez 12 anos, 1 mês atrás por Fábio Prado.
-
AutorPosts
-
22 de outubro de 2012 às 7:09 pm #104676Anônimo
Pessoal bom dia,
Venho mais uma vez recorrer aos amigos do fórum.
Tenho o seguinte Script.
*/
declare
vHoraAtual integer;
vHoraProximo integer;
vHora varchar(20);
vTotReg integer;
vNroSerie varchar2(20);
vDtamovimento varchar2(15);
vNroempresa number;begin
vNroSerie := ‘UR010500046′;
vDtamovimento := ’02-Oct-2012’;
vNroempresa := 1;— Inicio o contador 5926 = 1 Minuto
select (DBMS_UTILITY.GET_TIME + 5926) into vHoraProximo from dual;
begin
select count(1)
into vTotReg
from tb_docto a
where a.nroempresa = vNroempresa
and a.dtamovimento = vDtamovimento
and a.replicacao = ‘P’;if vTotReg > 0 then
WHILE vTotReg > 0 LOOP
select (DBMS_UTILITY.GET_TIME) into vHoraAtual from dual; — Atualiza o contador atual
if vHoraAtual = vHoraProximo then — se hora atual = hora programada executa
begin
select count(1)
into vTotReg
from tb_docto a
where a.nroempresa = vNroempresa
and a.dtamovimento = vDtamovimento
and a.replicacao = ‘P’;— Atualizo o proximo horário que vai executar 5926 = 1 Minuto
select (DBMS_UTILITY.GET_TIME + 5926) into vHoraProximo from dual;
end;
end if;
end loop;
end if;
end;
end;
/*A lógica é tipo um timer de 1 em 1 minuto executar a instrução abaixo :
select count(1)
into vTotReg
from tb_docto a
where a.nroempresa = vNroempresa
and a.dtamovimento = vDtamovimento
and a.replicacao = ‘P’;Se esta instrução retornar 0 para a variável vTotReg, uma outra ação será executada.
A questão é, se eu executo um update eu uma outra sessão no campo a.replicacacao para ‘F’.
parece que este count(1), não esta sendo executado, porém se eu o colocar o update ai dentro funciona.
Parece que loop não está funcinando ou se é algum problema de sessão.
Alguém ajuda ?22 de outubro de 2012 às 8:39 pm #104678rmanParticipante@clebermano
O seu script só vai ver a modificação do UPDATE que é rodado em outra sessão após do COMMIT. Isso segue o conceito de transação.
Essa solução não ficaria melhor utilizando job ou schedule?
23 de outubro de 2012 às 4:50 am #104684Fábio PradoParticipante@clebermano, concordo com o rman, não tente reinventar a roda. Vc não precisa criar um timer, o Oracle já tem recursos que podem te ajudar nisso. Crie um scheduler job que chama uma stored procedure que irá conter o código que vc quer executar.
[]s
Fábio Prado
http://www.fabioprado.net -
AutorPosts
- Você deve fazer login para responder a este tópico.