sql >> データベース >  >> RDS >> Oracle

修正:Oracleデータベースの「間隔の主要な精度が小さすぎる」

    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.


    1. SQLiteで大文字を含む行を見つける3つの方法

    2. Oracle11gでシーケンスをリセット

    3. microsoft.sqlserver.batchparser.dllが見つかりません

    4. 修正:「現在のデータベースのバックアップがないため、バックアップログを実行できません。」 SQL Server /SQLEdgeで