Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Fix:„Die führende Genauigkeit des Intervalls ist zu klein“ in Oracle Database

Wenn Sie versuchen, ein Intervallliteral in Oracle zu verwenden, aber immer wieder den Fehler „führende Genauigkeit des Intervalls ist zu klein“ erhalten, hilft das hoffentlich weiter.

Der Fehler

Hier ist ein Beispiel für den Fehler:

SELECT INTERVAL '125' YEAR
FROM DUAL;

Ergebnis:

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

Die Lösung

So beheben Sie das Problem:

SELECT INTERVAL '125' YEAR(3)
FROM DUAL;

Ergebnis:

+125-00

Ich habe lediglich (3) angehängt bis zum YEAR Stichwort. Dies gibt eine Genauigkeit von 3 an.

Die Standardgenauigkeit ist 2. Wenn wir also keine höhere Genauigkeit angeben, tritt der Fehler auf.

Sie können eine Genauigkeit von bis zu 9 angeben.

Beispiel:

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

Ergebnis:

+123456789-00

Und Folgendes passiert, wenn wir die Genauigkeit verringern, während die Zahl gleich bleibt:

SELECT INTERVAL '123456789' YEAR(5)
FROM DUAL;

Ergebnis:

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.

Gleicher Fehler wie zuvor.

Außerdem führt alles über 9 zu einem Fehler:

SELECT INTERVAL '123456789' YEAR(20)
FROM DUAL;

Ergebnis:

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.