Als je een letterlijke interval in Oracle probeert te gebruiken, maar je krijgt steeds de foutmelding "leidende precisie van het interval is te klein", hopelijk helpt dit.
De fout
Hier is een voorbeeld van de fout:
SELECT INTERVAL '125' YEAR
FROM DUAL;
Resultaat:
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
De oplossing
Ga als volgt te werk om het probleem op te lossen:
SELECT INTERVAL '125' YEAR(3)
FROM DUAL;
Resultaat:
+125-00
Het enige wat ik deed was (3)
. toevoegen naar het YEAR
trefwoord. Dit specificeert een precisie van 3.
De standaardprecisie is 2, dus als we geen hogere precisie specificeren, treedt de fout op.
U kunt een nauwkeurigheid tot 9 opgeven.
Voorbeeld:
SELECT INTERVAL '123456789' YEAR(9)
FROM DUAL;
Resultaat:
+123456789-00
En dit is wat er gebeurt als we de precisie verminderen terwijl we het getal hetzelfde houden:
SELECT INTERVAL '123456789' YEAR(5)
FROM DUAL;
Resultaat:
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.
Dezelfde fout als voorheen.
Ook resulteert alles hoger dan 9 in een fout:
SELECT INTERVAL '123456789' YEAR(20)
FROM DUAL;
Resultaat:
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.