SQL错误:ORA-12899:溢出在30个字符列中插入null

时间:2015-04-14 19:43:22

标签: sql oracle11g insert overflow

我正在运行一个简单的插入到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

现在,即使我插入NULL,列地址也是varchar2(30)。我有一个溢出。

  

SQL错误:ORA-12899:对于“TEMP”列,值太大。“ADDRESS”(实际:35,最大值:30)

真的很困惑如何发生这种情况。任何人都可以提供任何提示吗?我正在使用Oracle 11g

1 个答案:

答案 0 :(得分:2)

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

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

我也改为显式连接语法,虽然这与问题没有关系......

相关问题