我正在运行一个简单的插入到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
答案 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
我也改为显式连接语法,虽然这与问题没有关系......