Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Perbaiki:"presisi terkemuka dari interval terlalu kecil" di Oracle Database

Jika Anda mencoba menggunakan literal interval di Oracle, tetapi Anda terus mendapatkan kesalahan "presisi terdepan dari interval terlalu kecil", semoga ini membantu.

Kesalahan

Berikut ini contoh kesalahannya:

SELECT INTERVAL '125' YEAR
FROM DUAL;

Hasil:

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

Solusinya

Berikut cara memperbaiki masalah:

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

Hasil:

+125-00

Yang saya lakukan hanyalah menambahkan (3) ke YEAR kata kunci. Ini menentukan presisi 3.

Presisi defaultnya adalah 2, jadi jika kita tidak menentukan presisi yang lebih tinggi, kesalahan akan terjadi.

Anda dapat memberikan presisi hingga 9.

Contoh:

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

Hasil:

+123456789-00

Dan inilah yang terjadi jika kita mengurangi presisi sambil mempertahankan angka yang sama:

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

Hasil:

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.

Kesalahan yang sama seperti sebelumnya.

Selain itu, apa pun yang lebih tinggi dari 9 menghasilkan kesalahan:

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

Hasil:

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. Perbedaan Minus vs Kecuali di ORACLE/SQL Server

  2. Mengatur Timeout Jaringan untuk koneksi JDBC

  3. Bagaimana menemukan Cursors terbuka saat ini di Oracle

  4. Pengembang SQL Tidak Akan Mulai

  5. Bantuan ekspresi Oracle SQL GROUP BY bukan GROUP BY