sql >> Database >  >> RDS >> Oracle

Fix:"de leidende precisie van het interval is te klein" in Oracle Database

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.


  1. Een dag aftrekken van een datum in MariaDB

  2. Sjablonen gebruiken in SQL Server Management Studio (SSMS) - SQL Server / TSQL-zelfstudie, deel 16

  3. SQL LocalDB versus SQL Server CE

  4. Databasesortering instellen in Entity Framework Code-First Initializer