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.