Oracle
 sql >> Base de données >  >> RDS >> Oracle

Correction :"la précision d'interligne de l'intervalle est trop petite" dans la base de données Oracle

Si vous essayez d'utiliser un littéral d'intervalle dans Oracle, mais que vous obtenez toujours l'erreur "La précision de l'intervalle est trop petite", j'espère que cela vous aidera.

L'erreur

Voici un exemple d'erreur :

SELECT INTERVAL '125' YEAR
FROM DUAL;

Résultat :

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

La solution

Voici comment résoudre le problème :

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

Résultat :

+125-00

Tout ce que j'ai fait était d'ajouter (3) à l'YEAR mot-clé. Ceci spécifie une précision de 3.

La précision par défaut est 2, et donc si nous ne spécifions pas une précision plus élevée, l'erreur se produit.

Vous pouvez fournir une précision jusqu'à 9.

Exemple :

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

Résultat :

+123456789-00

Et voici ce qui se passe si nous réduisons la précision tout en gardant le même nombre :

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

Résultat :

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.

Même erreur qu'avant.

De plus, toute valeur supérieure à 9 entraîne une erreur :

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

Résultat :

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.