sql >> Databasteknik >  >> RDS >> Oracle

Fix:"den ledande precisionen för intervallet är för liten" i Oracle Database

Om du försöker använda en bokstavlig intervall i Oracle, men du fortsätter att få felet "den ledande precisionen för intervallet är för liten", förhoppningsvis hjälper detta.

Felet

Här är ett exempel på felet:

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å här åtgärdar du problemet:

SELECT INTERVAL '125' YEAR(3)
FROM DUAL;

Resultat:

+125-00

Allt jag gjorde var att lägga till (3) till YEAR nyckelord. Detta anger en precision på 3.

Standardprecisionen är 2, så om vi inte anger en högre precision uppstår felet.

Du kan ge en precision på upp till 9.

Exempel:

SELECT INTERVAL '123456789' YEAR(9)
FROM DUAL;

Resultat:

+123456789-00

Och här är vad som händer om vi minskar precisionen samtidigt som vi behåller siffran densamma:

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.

Samma fel som tidigare.

Allt högre än 9 resulterar också i ett fel:

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. Installation av RODBC/ROracle-paket på OS X Mavericks

  2. Min Välj SUM-fråga returnerar null. Det bör returnera 0

  3. 4 sätt att söka efter dubbletter av rader i SQL Server

  4. SQLite UNION-operatör