Hvis du forsøger at bruge et interval bogstaveligt i Oracle, men du bliver ved med at få fejlen "Intervalets førende præcision er for lille", hjælper dette forhåbentlig.
Fejlen
Her er et eksempel på fejlen:
SELECT INTERVAL '125' YEAR
FROM DUAL;
Resultat:
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
Løsningen
Sådan løser du problemet:
SELECT INTERVAL '125' YEAR(3)
FROM DUAL;
Resultat:
+125-00
Alt jeg gjorde var at tilføje (3)
til YEAR
søgeord. Dette angiver en præcision på 3.
Standardpræcisionen er 2, og hvis vi ikke angiver en højere præcision, opstår fejlen.
Du kan give en præcision på op til 9.
Eksempel:
SELECT INTERVAL '123456789' YEAR(9)
FROM DUAL;
Resultat:
+123456789-00
Og her er, hvad der sker, hvis vi reducerer præcisionen, mens vi holder tallet det samme:
SELECT INTERVAL '123456789' YEAR(5)
FROM DUAL;
Resultat:
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.
Samme fejl som før.
Alt højere end 9 resulterer også i en fejl:
SELECT INTERVAL '123456789' YEAR(20)
FROM DUAL;
Resultat:
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.