[firebase-br] SP travando

Kelver Merlotti kmerlotti em gmail.com
Seg Set 22 15:53:15 -03 2008


A idéia é fazer o seguinte..

PROCEDURE TESTE AS...
  ...
  UPDATE TABELA SET... ;
  SUSPEND;

  WHEN EXCEPTION DO
  BEGIN
    MYSLEEP(2000);
    EXECUTE PROCEDURE TESTE;
  END
END

Captou? tipo.. se o update não funfar, aguarda um pouco e tenta denovo..
Concordo que a CPU vai disparar, mas não pode passar do tempo que eu
passar pra MYSLEEP, certo? Se eu disser MYSLEEP(1000), não pode passar
de 1 segundo a 100%.

Abraços!

2008/9/22 Adriano dos Santos Fernandes <adrianosf em uol.com.br>:
> Kelver Merlotti escreveu:
>> Fala galera, boa tarde!
>>
>> Procurei na net e não achei nenhuma SP pra executar um "sleep" no
>> banco (tipo o do delphi mesmo)..
>>
>> Daí resolvi montar minha própria procedure Sleep.. MAS, há algo de
>> errado no paraíso.. se depuro ela pelo IBExpert, funfa normalz.. mas
>> quando dou o "select * from myslee(2000)" o FB vai a 100% de uso da
>> sua CPU e nunca mais retorna!!
>>
> E por quê vc quer executar um sleep no servidor?
>
>> Alguém tem alguma idéia? Segue abaixo o código da SP:
>>
>> ALTER PROCEDURE MYSLEEP (
>>     ms integer)
>> returns (
>>     endtime numeric(6,3))
>> as
>> declare variable tmp numeric(6,3);
>> begin
>>   SELECT EXTRACT(SECOND FROM CURRENT_TIMESTAMP)
>>     FROM RDB$DATABASE INTO :TMP;
>>
>>   ENDTIME = TMP;
>>   TMP = TMP + (MS / 1000);
>>
>>   WHILE (ENDTIME < TMP) DO
>>     SELECT EXTRACT(SECOND FROM CURRENT_TIMESTAMP)
>>       FROM RDB$DATABASE INTO :ENDTIME;
>>
>>   SUSPEND;
>> end
>>
> É claro que vai a 100%. É isso que vc está pedindo.
>
>
> Adriano
>
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use: http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>



-- 
Kelver Merlotti
Coordenador Editorial do Portal www.ActiveDelphi.com.br
Contato: kelver em activedelphi.com.br
Google: kmerlotti em gmail.com
Msn: kmerlotti em hotmail.com




Mais detalhes sobre a lista de discussão lista