SQL Error: ORA-12899: Overflow inserting null in 30 character column

SQL Error: ORA-12899: Overflow inserting null in 30 character column

我是 运行 一个简单的插入 select 我的代码是

Insert into TEMP
select a.emp_name,
       Null as address,
       a.emp_id,
       .......
       from Temp1 a,Temp2 b where a.batch_id=b.batch_id

现在列地址是 varchar2(30) 即使我插入 NULL 。我溢出了。

SQL Error: ORA-12899: value too large for column "TEMP"."ADDRESS" (actual: 35, maximum: 30)

真纳闷这怎么能happen.Can谁能给点提示?我正在使用 Oracle 11g

您可能只是将错误的值放入列中,因为您没有在插入子句中指定它们。最好明确列出列,而不是依赖它们在数据字典中出现的顺序:

insert into TEMP (emp_name, address, empi_id, ...)
select a.emp_name,
   null,
   a.emp_id,
   .......
from Temp1 a
join Temp2 b on a.batch_id=b.batch_id

我也更改为显式连接语法,尽管这与问题无关...