ERRO ORACLE - DATA_PRECISION nulo

Boa tarde…

Eu estou fazendo alguns ajustes em uma base quando me deparei com a seguinte situação:
DATA_PRECISION = NULL

Fiz um select na tabela all_tab_columns, com os filtros normais (table_name, owner, column_name). Foi retornado a coluna que eu avia selecionado, porém com o campo data_precision = null. A coluna é do tipo number.

Curioso fiz um desc na tabela.
E o desc retornou number(38 ) para a coluna.

Esta base é origem para um projeto de ODI e quando eu faço a engenharia reversa, o campo retorna com tamanho 0 e precisão -127.

Este erro é do Oracle ? Tem alguma forma de solucioná-lo?

[code]select * from v$version;

BANNER

Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
PL/SQL Release 11.2.0.1.0 - Production
CORE 11.2.0.1.0 Production
TNS for 64-bit Windows: Version 11.2.0.1.0 - Production
NLSRTL Version 11.2.0.1.0 - Production [/code]

Afonso,

Tudo bem?

Eu entendo que o campo DATA_PRECISION pode apresentar valor NULL quando você cria uma coluna do tipo NUMBER, sem especificar o total de colunas e casas decimais.

Faça este teste:

1) Crie uma tabela
CREATE TABLE EXEMPLO
(A NUMBER(5,2),
B NUMBER(38),
C NUMBER);

2) Consulte como estas colunas ficam no dicionario de dados com a querie abaixo:

SELECT TABLE_NAME, COLUMN_NAME, DATA_LENGTH, DATA_PRECISION, DATA_SCALE FROM USER_TAB_COLUMNS WHERE TABLE_NAME = 'EXEMPLO'


Note que para a coluna "C" da tabela "EXEMPLO" o campo DATA_PRECISION não apresenta valor. Desta forma, acho que você pode entender que um campo com DATA_LENGTH =22, DATA_PRECISION=NULL e DATA_SCALE=NULL deve ser entendido como uma coluna do tipo "NUMBER", sem precisão de casas.

Eu prefiro sempre criar colunas especificando o total de digitos inteiros e decimais.

Abraços e espero ter podido ajudar você a esclarecer esta dúvida.

Sergio Coutinho