Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Poprawka:„wiodąca precyzja interwału jest zbyt mała” w Oracle Database

Jeśli próbujesz użyć literału interwału w Oracle, ale wciąż otrzymujesz błąd „wiodąca precyzja interwału jest za mała”, miejmy nadzieję, że to pomoże.

Błąd

Oto przykład błędu:

SELECT INTERVAL '125' YEAR
FROM DUAL;

Wynik:

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

Rozwiązanie

Oto jak rozwiązać ten problem:

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

Wynik:

+125-00

Dołączyłem tylko (3) do YEAR słowo kluczowe. Określa to dokładność 3.

Domyślna precyzja to 2, więc jeśli nie określimy wyższej precyzji, wystąpi błąd.

Możesz podać precyzję do 9.

Przykład:

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

Wynik:

+123456789-00

A oto, co się stanie, jeśli zmniejszymy precyzję, zachowując tę ​​samą liczbę:

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

Wynik:

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.

Ten sam błąd co poprzednio.

Ponadto wszystko, co jest wyższe niż 9, powoduje błąd:

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

Wynik:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Funkcja NANVL() w Oracle

  2. Oracle.DataAccess.Client.OracleException ORA-03135:utrata połączenia

  3. Jak formatować daty w Oracle

  4. Obsługa błędów Oracle

  5. Jak skonfigurować katalog docelowy dziennika archiwum w bazie danych Oracle