Estou postando aqui um email que recebi de um amigo/irmão, o Carlos.
Carlão um abraço e obrigado por compartilhar conosco.
abaixo segue o email dele.
Pessoal,
Tivemos um problema ao fazer uma procedure que usa o comando CURRENT para recuperar a data e hora do sistema.
Verificamos que se utilizado mais de uma vez dentro da procudure o mesmo retorna sempre a mesma informacao, mesmo depois de levar varios segundos/minutos entre um comando e outro;
No site da IBM explica que ele congela essa data e hora quando chamado uma procedure para retornar sempre a mesma informacao ate o termino da execução dela.
Por conta disso fomos atrás de outra forma de obte-la e encontramos a seguinte:
SELECT DBINFO('utc_to_datetime', sh_curtime)
FROM sysmaster:sysshmvals;
Como esse comando é bem mais complicado, criei uma função para retornar mais facilmente a data/hora, podendo ser chamada em suas procedures:
DROP FUNCTION current_time;
CREATE FUNCTION current_time()
RETURNING DATETIME YEAR TO FRACTION;
DEFINE current_time DATETIME YEAR TO FRACTION;
SELECT DBINFO('utc_to_datetime', sh_curtime)
INTO current_time
FROM sysmaster:sysshmvals;
RETURN current_time;
END FUNCTION;
Exemplo de utilizacao:
select current_time() from empresa;
Para comparar a diferença basta fazer uma query com processamento demorado e comparar, o campo CURRENT vai mostrar a mesma data/hora para todos os registros, enquanto que a funcao CURRENT_TIME() apresentará a data/hora que 'printou' cada linha;
select current, current_time() from estoque_trans
by callprog
Estava procurando realmente por isso.
ResponderExcluirAjudou muito
Obrigado.