Como evitar datas zeradas em Oracle?

De CIGAM WIKI

FAQ_CIGAM > FAQ_Utilidades/Diversos > Ambiente > Como evitar datas zeradas em Oracle?

O que é uma "data zerada" no Oracle

Na entrada do CIGAM devem ser avaliadas as flags do Database necessárias para execução. Também são avalidas se não existem flags de Oracle sendo usadas no SQLServer e vice-versa. [Versão211004 1]

Importante: Algumas vezes temos um registro com uma data zerada na tabela do banco de dados. Isto se trata de uma propriedade do banco Oracle. Ocorre caso seja digitado manualmente o valor "00/00/00" em um campo do formato de data. Por padrão, devemos deixar o campo sem preencher que o sistema colocará o valor padrão "nulo" neste campo, evitando esta divergência.

Para exemplificar, vamos verificar esta consulta em que buscamos pela data "30/11/02" que é apresentada em uma OP (campo 'dt_iniciar'), mas na verdade ela está zerada na tabela, por isso consultamos também convertendo a data para "00/00/00" e encontramos esta OP.


Busca1.png


Agora, se filtramos apenas pela data "30/11/02" que visualmente é apresentada, não encontramos nada, justamente porque na realidade o valor armazenado é zerado.


Busca2.png


Importante: visualmente, pelo sistema CIGAM, ambos os valores "00/00/00" e "nulo" serão apresentados da mesma maneira. Porém, via aplicação gerenciadora de banco de dados, se usarmos uma consulta na tabela com a função to_char passando como parâmetros o campo e o formato 'DD-MM-YY' comparando com o valor '00-00-00' iremos identificar quais registros necessitam de correção.

Como evitar isto?

Na documentação do Magic temos estas informações sobre a permissão de datas zeradas em Oracle.


ZeroDatesAllowedDoc.png


Então, podemos parametrizar em nosso arquivo "Magic.ini" na sessão do "CIGAM_SQL" a opção ORA_Zero_Dates_allowed=N que o sistema passará a emitir uma mensagem de erro "no data found" sempre que o usuário digitar uma data zerada, antes mesmo de gravar no banco de dados, evitando assim possíveis divergências relacionadas com isto.

Mensagem de banco de dados na Pesquisa de Estoque

Caso a mensagem "no data found" ocorra na pesquisa de estoque, devemos utilizar a versão calculada na configuração ES - GE - 3036 - Origem dos dados de estoque pois ela irá evitar que registros com datas zeradas em oracle possam impactar em nosso estoque, visto que a versão calculada já irá tratar registros incorretos de versões anteriores.

Versões

Versão 211004

  1. A partir da versão 211004 na OS 287165/365