Oracleで間隔リテラルを使用しようとしても、「間隔の先行精度が小さすぎる」というエラーが発生し続ける場合は、これが役立つことを願っています。
エラー
エラーの例を次に示します。
SELECT INTERVAL '125' YEAR
FROM DUAL;
結果:
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
ソリューション
問題を解決する方法は次のとおりです。
SELECT INTERVAL '125' YEAR(3)
FROM DUAL;
結果:
+125-00
(3)
を追加するだけでした YEAR
へ キーワード。これは3の精度を指定します。
デフォルトの精度は2であるため、より高い精度を指定しないと、エラーが発生します。
最大9の精度を提供できます。
例:
SELECT INTERVAL '123456789' YEAR(9)
FROM DUAL;
結果:
+123456789-00
数値を同じに保ちながら精度を下げると、次のようになります。
SELECT INTERVAL '123456789' YEAR(5)
FROM DUAL;
結果:
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.
以前と同じエラー。
また、9を超えると、エラーが発生します:
SELECT INTERVAL '123456789' YEAR(20)
FROM DUAL;
結果:
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.