DBAtlas · Atlas de operações de banco de dados

ORA-01438: value larger than specified precision allowed for this column

Oracle

O que significa?

Um número que excede os limites de precisão e escala definidos foi gravado em uma coluna NUMBER. Por exemplo, um valor com parte inteira de 3 dígitos não cabe em uma coluna NUMBER(4,2).

Por que acontece?

A definição NUMBER(p,s) da coluna é estreita demais para os dados; o resultado de um cálculo é maior que o esperado; a escala decimal reduz os dígitos restantes para a parte inteira (NUMBER(5,3) permite apenas 2 dígitos inteiros).

Como resolver

Amplie a capacidade da coluna para corresponder ao intervalo real dos dados: ALTER TABLE my_table MODIFY (my_column NUMBER(12,2)); Arredonde o valor na aplicação, ou ajuste-o à escala com ROUND/TRUNC. Para encontrar a linha que estoura, restrinja sua consulta durante os testes, e adicione validação de entrada.

Abrir no DBAtlas →

Mais entradas deste banco