ORA-01438: value larger than specified precision allowed for this column
OracleO 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.
Mais entradas deste banco
- gc buffer busyEspera (RAC): contenção por um bloco de cache fusion sendo transferido entre instâncias
- library cache lockEspera: contenção em um handle de objeto do library cache (serialização de parse/DDL)
- ORA-00604error occurred at recursive SQL level
- ORA-01400cannot insert NULL into (column)
- ORA-02291integrity constraint violated - parent key not found
- ORA-02292integrity constraint violated - child record found
- ORA-00979not a GROUP BY expression