sql >> Database teknologi >  >> RDS >> Oracle

Fix:"den førende præcision af intervallet er for lille" i Oracle Database

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.


  1. Automatiseret test af opgraderingsprocessen til PostgreSQL

  2. Brug af IF ELSE-sætning baseret på Count til at udføre forskellige Insert-sætninger

  3. Kald til udefineret funktion oci_connect, php_oci8_12c.dll, windows 8.1, php5.6.6

  4. Fuld gendannelse af en MySQL eller MariaDB Galera Cluster fra backup