2011年9月12日 星期一

ORA-01438

ORA-01438 value larger than specified precision allows for this column

發生原因:在執行INSERT或是UPDATE的時候,給值的數字格式資料長度超過限制

處理辦法:
1.修改數字欄位的資料長度在限制的長度之內
2.修改資料表的資料長度限制

範例
建立一個資料表,設定資料長度分別為NUMBER(2)及VARCHAR(2)。

CREATE TABLE TABEL_NAME(
AA NUMBER(2),
BB VARCGAR(2)
)

這樣就會發生ORA-01438的錯誤,因為AA的欄位長度是2但是卻給了一個長度是3的值。

INSERT TABELE_NAME(
AA,
BB)
VALUES(
123,
'bb')

要排除這樣的錯誤有兩個方法,把INSERT值的長度修改符合限制的長度2。

INSERT TABELE_NAME(
AA,
BB)
VALUES(
12,
'bb')

或是修改資料表的設計。

ALTER TABLE TABLE_NAME
MODIFY AA NUMBER(3)

>> 歡迎前往 Superfunction ORA error code

沒有留言:

張貼留言