23

フォーマット NUMBER (2,2) のフィールドに 0 以外の数字を挿入しようとすると、そのエラーが発生します。

UPDATE
    PROG_OWN.PROG_TPORCENTAJE_MERMA
SET
    PCT_MERMA = 3
WHERE
    IDN_PORCENTAJE_MERMA = 1

[エラー コード: 1438、SQL 状態: 22003] ORA-01438: この列に指定された精度よりも大きな値が許可されています

COLUMN_NAME DATA_TYPE   TYPE_NAME   COLUMN_SIZE   BUFFER_LENGTH   DECIMAL_DIGITS
PCT_MERMA   3           NUMBER      2             0               2

10進数で試した場合にも発生します。

理由はありますか?

4

2 に答える 2

37

number(2,2)最初のパラメーターは数値の合計桁数であり、2 番目のパラメーター (つまり、ここでは 2) は小数部分の桁数であるため、データ型を 1 より大きい数値で更新することはできません。data を挿入または更新できると思います< 1。つまり、0.12、0.95 などです。

NUMBER Datatypeの NUMBER DATATYPE を確認してください。

于 2013-01-16T11:59:47.503 に答える
25

NUMBER (precision, scale)は、小数点以下のprecision桁数の合計桁数を意味します。scale

NUMBER(2,2)つまり、どちらも 10 進数である 2 桁の数字を意味します。を使用して 4 桁を取得することを意味する場合がNUMBER(4,2)あり、そのうち 2 桁は小数です。現在、整数部分がゼロの値のみを挿入できます。

詳細については、Oracle docs を参照してください

于 2013-01-16T11:59:00.697 に答える