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.