2013-01-16 461 views
15

NUMBER(2,2)形式のフィールドに0以外の任意の数値を挿入しようとすると、このエラーが発生します。ORA-01438:挿入時に、この列に指定された精度より大きい値3

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

[エラーコード:1438、SQL状態:22003] ORA-01438:I 10進数でしようとした場合、このコラム

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

に許可指定された精度を超える値がまた起こります。

理由は何ですか?

+0

値を範囲または特定の整数に制限しようとする場合は、[check constraint](http://docs.oracle.com/cd/E14072_01/server.112/e10592)を使用する方がよい場合があります。 /clauses002.htm#SQLRF52204)。 –

答えて

23

データ型がnumber(2,2)の場合、1より大きい数値で更新することはできません。最初のパラメータは数値の合計桁数であり、2番目のパラメータ(ここでは.ie 2)は10進数の桁数です部。私はあなたがデータを挿入または更新できると思います< 1。すなわち0.12,0.95など

NUMBER DATATYPEをNUMBER Datatypeにチェックしてください。

17

NUMBER (precision, scale)は、precisionを意味し、そのうち、小数点以下はscale桁です。

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

More info at the Oracle docs

関連する問題