[firebase-br] SP travando

Kelver Merlotti kmerlotti em gmail.com
Ter Set 23 17:30:06 -03 2008


hehe.. eu imagino..
e é por "medo" destes pesadelos que não me arrisco a mexer em nada..
pelo menos enquanto não for realmente necessário :-)
abraços!

2008/9/23 Kleber Caneva <kdcc em terra.com.br>:
> Agora entendi...
>
> A um bom tempo atrás peguei um tb em Dialeto 1 e BDE....Converti, mas até
> hoje tenho pesadelos com essa migração..rs
>
> []´s
>
> Kléber Caneva
>
> ----- Original Message -----
> From: "Kelver Merlotti" <kmerlotti em gmail.com>
> To: "FireBase" <lista em firebase.com.br>
> Sent: Tuesday, September 23, 2008 5:12 PM
> Subject: Re: [firebase-br] SP travando
>
>
> herança... "herdei" um sistema pra tomar conta e nem me arrisco a
> migrar a base nessa altura do campeonato.. rsrs
> é mais fácil lhe dar com as limitações do dialeto do que arriscar a
> mudança.. :-)
> Abraços!
>
> 2008/9/23 Kleber Caneva <kdcc em terra.com.br>:
>> Só por curiosidade, porque você está usando o Dilateo 1 ?
>>
>> []´s
>>
>> Kléber Caneva
>>
>> ----- Original Message -----
>> From: "Kelver Merlotti" <kmerlotti em gmail.com>
>> To: "FireBase" <lista em firebase.com.br>
>> Sent: Tuesday, September 23, 2008 3:22 PM
>> Subject: Re: [firebase-br] SP travando
>>
>>
>> Salve galera.. a solução foi a seguinte:
>>
>> SleepUdf.dll -> feita em delphi
>> -- #####
>> function DoSleep(var i: Integer): Integer; cdecl; export;
>> begin
>>  try
>>    Sleep(i);
>>  finally
>>    result := 0;
>>  end;
>> end;
>>
>> Exports
>>  DoSleep;
>> -- #####
>>
>> No banco:
>> -- #####
>> DECLARE EXTERNAL FUNCTION DOSLEEP
>>    INTEGER
>> RETURNS INTEGER BY VALUE
>> ENTRY_POINT 'DoSleep' MODULE_NAME 'SleepUdf'
>> -- #####
>>
>> Dessa maneira, agora eu consigo dentro da minha procedure aguardar N
>> segundos antes de continuar. E pra confirmar a sobre o retorno do
>> CURRENT_TIMESTAMP ou do CAST('NOW' as TIMESTAMP) dentro de uma
>> procedure, fiz o seguinte teste:
>>
>> CREATE PROCEDURE PROC_TESTE_SLEEP
>> returns (
>>    endnow date,
>>    endtime date)
>> as
>> declare variable i integer;
>> begin
>>  I = 0;
>>  WHILE (I < 10) DO
>>  BEGIN
>>    ENDTIME = CURRENT_TIMESTAMP;
>>    ENDNOW  = CAST('NOW' AS TIMESTAMP);
>>    I = I + 1;
>>    DOSLEEP(1000);
>>    SUSPEND;
>>  END
>>  SUSPEND;
>> end
>>
>> Ao executá-la, tive o seguinte retorno em 10 segundos:
>>
>> ENDTIME                 ENDNOW
>> 23/09/2008 15:27:17 23/09/2008 15:27:17
>> 23/09/2008 15:27:17 23/09/2008 15:27:18
>> 23/09/2008 15:27:17 23/09/2008 15:27:19
>> 23/09/2008 15:27:17 23/09/2008 15:27:20
>> 23/09/2008 15:27:17 23/09/2008 15:27:21
>> 23/09/2008 15:27:17 23/09/2008 15:27:22
>> 23/09/2008 15:27:17 23/09/2008 15:27:23
>> 23/09/2008 15:27:17 23/09/2008 15:27:24
>> 23/09/2008 15:27:17 23/09/2008 15:27:25
>> 23/09/2008 15:27:17 23/09/2008 15:27:26
>> 23/09/2008 15:27:17 23/09/2008 15:27:26
>>
>> Conclusão: Conforme nossos amigos Adriano e Eduardo falaram,
>> CAST('NOW' AS TIMESTAMP) retornou o horário correto de cada instante
>> em que foi chamado, já o CURRENT_TIMESTAMP retornou em todos os
>> momentos o horário em que a SP foi disparada.
>>
>> Só pra complementar, o ambiente é Windows, com FB21 e BD no dialeto 1.
>> Fica aí a dica.
>>
>> Obrigado a todos e um forte abraço!!
>>
>> 2008/9/23 Eduardo Pelizzari de Andrade <eduardoandrade em persoft.com.br>:
>>> mas continua com problema, inserindo os parentes e usando o 'now'?
>>>
>>> Se continuar com problema, depure ele da seguinte forma, crie uma
>>> tabela, com os campos que estão sendo comparados e faça um insert a cada
>>> loop. Adicione um contador e coloque ele no teste do while de forma a
>>> garantir a saída do loop e analise o resultado da tabela.
>>>
>>> Eduardo Pelizzari de Andrade
>>> Persoft Softwares Aplicativos
>>>
>>>
>>>
>>>
>>> Kelver Merlotti escreveu:
>>>> boa Edu.. pelos testes que fiz, não houve problemas até então em usar
>>>> o 24/60/60, até porque são os mesmos operadores e possuem a mesma
>>>> precedência. De qualquer forma, é sempre bom evitar surpresas..
>>>> adotarei a técnica dos parenteses..
>>>> obrigado e até mais!!
>>>>
>>>> 2008/9/23 Eduardo Pelizzari de Andrade <eduardoandrade em persoft.com.br>:
>>>>
>>>>> kelver, Eu não tenho certeza como será calculado 1/24/60/60, se ele
>>>>> fará
>>>>> o calculo da esquerda para direita ou da direita para a esquerda, isto
>>>>> faria diferença, experimente usar 1 / (24*360) e como sugerio o magno
>>>>> tente cast('now' as timestamp) no lugar de current_timestamp.
>>>>>
>>>>> Eduardo Pelizzari de Andrade
>>>>> Persoft Softwares Aplicativos
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> Kelver Merlotti escreveu:
>>>>>
>>>>>> captei.. valew!!
>>>>>> to trabalhando numa solução aqui e assim que terminar compartilho com
>>>>>> a
>>>>>> galera..
>>>>>> abraços!
>>>>>>
>>>>>> 2008/9/23 Adriano dos Santos Fernandes <adrianosf em uol.com.br>:
>>>>>>
>>>>>>
>>>>>>> Kelver Merlotti escreveu:
>>>>>>>
>>>>>>>
>>>>>>>> Realmente Eduardo, da primeira forma não funcionaria, mas conforme
>>>>>>>> postei novamente - já corrigido - ainda não funcionou:
>>>>>>>>
>>>>>>>> Magno.. fiz como o sugerido e infelizmente continua travando se
>>>>>>>> executo ela via select.. o fb para de responder.. depurando ela roda
>>>>>>>> normalex! já num select * from mysleep(10000) ela nunca mais
>>>>>>>> retorna..
>>>>>>>> Veja como ficou:
>>>>>>>>
>>>>>>>> CREATE PROCEDURE MYSLEEP (
>>>>>>>>    ms integer)
>>>>>>>> returns (
>>>>>>>>    endtime date)
>>>>>>>> as
>>>>>>>> declare variable tmp date;
>>>>>>>> begin
>>>>>>>>  ENDTIME = CURRENT_TIMESTAMP;
>>>>>>>>  TMP = ENDTIME + (MS / 1000) * (1/24/60/60);
>>>>>>>>  WHILE (ENDTIME < TMP) DO
>>>>>>>>    ENDTIME = CURRENT_TIMESTAMP;
>>>>>>>>
>>>>>>>>
>>>>>>> De acordo com o padrão SQL, CURRENT_TIMESTAMP deve retornar o horário
>>>>>>> que a procedure foi iniciada. E é por isso o loop infinito.
>>>>>>>
>>>>>>> Achei que a constante TIMESTAMP 'NOW' resolveria o problema mas
>>>>>>> parece
>>>>>>> que não. Acho que vc vai precisar de uma UDF que retorne a hora real
>>>>>>> atual.
>>>>>>>
>>>>>>>
>>>>>>> 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
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>> ------------------------------------------------------------------------
>>>>>>
>>>>>>
>>>>>> No virus found in this incoming message.
>>>>>> Checked by AVG - http://www.avg.com
>>>>>> Version: 8.0.169 / Virus Database: 270.7.1/1686 - Release Date:
>>>>>> 23/09/2008 07:38
>>>>>>
>>>>>>
>>>>>>
>>>>> ______________________________________________
>>>>> 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
>>>>>
>>>>>
>>>>
>>>>
>>>>
>>>>
>>>> ------------------------------------------------------------------------
>>>>
>>>>
>>>> No virus found in this incoming message.
>>>> Checked by AVG - http://www.avg.com
>>>> Version: 8.0.169 / Virus Database: 270.7.1/1686 - Release Date:
>>>> 23/09/2008 07:38
>>>>
>>>>
>>>
>>> ______________________________________________
>>> 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
>>
>> ______________________________________________
>> 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
>>
>> E-mail verificado pelo Terra Anti-Spam.
>> Para classificar esta mensagem como spam ou não spam, visite
>> http://mail.terra.com.br/cgi-bin/reportspam.cgi?+_d=SCY0NDU0NzM0I3Blcm0hdGVycmEmMSwxMjIyMTk0MjA0LjYxMjQzMy44MTM1LnRyaWJ1bmUudGVycmEuY29tLDk4NzY=
>> Verifique periodicamente a pasta Spam para garantir que apenas mensagens
>> indesejadas sejam classificadas como Spam.
>>
>>
>>
>> ______________________________________________
>> 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
>
> ______________________________________________
> 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
>
> E-mail verificado pelo Terra Anti-Spam.
> Para classificar esta mensagem como spam ou não spam, visite
> http://mail.terra.com.br/cgi-bin/reportspam.cgi?+_d=SCY0NDU0NzM0I3Blcm0hdGVycmEmMSwxMjIyMjAwODIwLjc5NTkyMC40NzgyLmJvcHJlLnRlcnJhLmNvbSwxMjAyOA==
> Verifique periodicamente a pasta Spam para garantir que apenas mensagens
> indesejadas sejam classificadas como Spam.
>
>
>
> ______________________________________________
> 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