SQL Error: ORA-01401: inserted value too large for column

SQL Error: ORA-01401: inserted value too large for column

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

SQL Error: ORA-01401: inserted value too large for column

table.

中有 60 列,我怎么知道哪一列具有较大的价值?

SQL Error: ORA-01401: inserted value too large for column

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

How would I come to know that which column is having large value as I am having 60 columns in the table.

错误肯定会有 table 和列名以及插入的实际大小和允许的最大大小。

例如,

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)" 其中 LALITSCHEMATTABLEACOLUMN。 table 创建时为 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>