sql >> Databáze >  >> RDS >> Oracle

Oprava:„přední přesnost intervalu je příliš malá“ v databázi Oracle

Pokud se v Oracle pokoušíte použít intervalový literál, ale stále se vám zobrazuje chyba „hlavní přesnost intervalu je příliš malá“, doufejme, že to pomůže.

Chyba

Zde je příklad chyby:

SELECT INTERVAL '125' YEAR
FROM DUAL;

Výsledek:

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

Řešení

Zde je návod, jak problém vyřešit:

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

Výsledek:

+125-00

Jediné, co jsem udělal, bylo připojení (3) do YEAR klíčové slovo. To určuje přesnost 3.

Výchozí přesnost je 2, takže pokud neurčíme vyšší přesnost, dojde k chybě.

Můžete zadat přesnost až 9.

Příklad:

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

Výsledek:

+123456789-00

A tady je to, co se stane, když snížíme přesnost, zatímco číslo zůstane stejné:

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

Výsledek:

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.

Stejná chyba jako předtím.

Cokoli vyšší než 9 také způsobí chybu:

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

Výsledek:

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. Změny Oracle Ace

  2. Instalace MySQL na CentOS 7

  3. Jak funguje funkce Scale() v PostgreSQL

  4. Používají různé databáze různé uvozovky?