SQL错误:ORA-01401:插入的值对于列太大

时间:2015-03-24 09:22:46

标签: oracle oracle10g

我在向Oracle数据库中的表中插入新记录时遇到问题。错误描述说 -

  

SQL错误:ORA-01401:列值

的插入值太大

我如何知道哪个列具有较大的值,因为我在表中有60列。

1 个答案:

答案 0 :(得分:2)

  

SQL错误:ORA-01401:列值

的插入值太大

您正在尝试插入大于列的指定大小的值。

  

我如何知道哪个列具有较大的值,因为我在表中有60列。

错误肯定会有表名和列名,插入实际大小并允许最大大小。

例如,

SQL> CREATE TABLE t(A VARCHAR2(2));

Table created.

SQL>
SQL> INSERT INTO t VALUES ('123');
INSERT INTO t VALUES ('123')
                      *
ERROR at line 1:
ORA-12899: value too large for column "LALIT"."T"."A" (actual: 3, maximum: 2)


SQL>

在上面的示例中,错误明确指出“列” LALIT“。”T“。”A“(实际:3,最大值:2)”其中 LALIT SCHEMA T TABLE A COLUMN。创建表时为A列指定的大小为2,但实际插入时为3。

更新关于ORA-01401ORA-12899之间的混淆。

从Oracle 10g及更高版本开始,ORA-01401被修改为ORA-12899,这更加明确,并且具有导致错误的SCHEMA,TABLE和COLUMN的详细信息。

其他信息以防万一有兴趣:

ORA-01401的副本,即ORA-01438,适用于NUMBER。这似乎没有改变。

例如,

SQL> CREATE TABLE t(A number(2));

Table created.

SQL>
SQL> INSERT INTO t VALUES (123);
INSERT INTO t VALUES (123)
                      *
ERROR at line 1:
ORA-01438: value larger than specified precision allowed for this column


SQL>