Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Correção:“a precisão inicial do intervalo é muito pequena” no Oracle Database


Se você está tentando usar um literal de intervalo no Oracle, mas continua recebendo o erro "precisão principal do intervalo é muito pequeno", espero que isso ajude.

O erro


Veja um exemplo do erro:
SELECT INTERVAL '125' YEAR
FROM DUAL;

Resultado:
ORA-01873: the leading precision of the interval is too small
01873. 00000 -  "the leading precision of the interval is too small"
*Cause:    The leading precision of the interval is too small to store the
           specified interval.
*Action:   Increase the leading precision of the interval or specify an
           interval with a smaller leading precision.
Error at Line: 9 Column: 17

A solução


Veja como corrigir o problema:
SELECT INTERVAL '125' YEAR(3)
FROM DUAL;

Resultado:
+125-00

Tudo o que fiz foi acrescentar (3) para o YEAR palavra-chave. Isso especifica uma precisão de 3.

A precisão padrão é 2 e, portanto, se não especificarmos uma precisão maior, ocorrerá o erro.

Você pode fornecer uma precisão de até 9.

Exemplo:
SELECT INTERVAL '123456789' YEAR(9)
FROM DUAL;

Resultado:
+123456789-00

E aqui está o que acontece se reduzirmos a precisão mantendo o número o mesmo:
SELECT INTERVAL '123456789' YEAR(5)
FROM DUAL;

Resultado:
Error starting at line : 1 in command -
SELECT INTERVAL '123456789' YEAR(5)
FROM DUAL
Error at Command Line : 1 Column : 17
Error report -
SQL Error: ORA-01873: the leading precision of the interval is too small
01873. 00000 -  "the leading precision of the interval is too small"
*Cause:    The leading precision of the interval is too small to store the
           specified interval.
*Action:   Increase the leading precision of the interval or specify an
           interval with a smaller leading precision.

Mesmo erro de antes.

Além disso, qualquer coisa maior que 9 resulta em um erro:
SELECT INTERVAL '123456789' YEAR(20)
FROM DUAL;

Resultado:
Error starting at line : 1 in command -
SELECT INTERVAL '123456789' YEAR(20)
FROM DUAL
Error at Command Line : 1 Column : 34
Error report -
SQL Error: ORA-30088: datetime/interval precision is out of range
30088. 00000 -  "datetime/interval precision is out of range"
*Cause:    The specified datetime/interval precision was not between 0 and 9.
*Action:   Use a value between 0 and 9 for datetime/interval precision.