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



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

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

当我在表中有60列时,我怎么知道哪一列的值大呢。

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>

在上面的示例中,错误清楚地表明"column"LALIT"."T"."A"(实际值:3,最大值:2)",其中LA LITSCHEMATCOLUMN。创建表时为列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>

最新更新