SQL错误:ORA-12899:在30个字符的列中插入null时溢出
我正在对select运行一个简单的insert,我的代码是SQL错误:ORA-12899:在30个字符的列中插入null时溢出,sql,oracle11g,insert,overflow,Sql,Oracle11g,Insert,Overflow,我正在对select运行一个简单的insert,我的代码是 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错误:ORA-12899:列“TEMP”“ADDRESS”
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错误:ORA-12899:列“TEMP”“ADDRESS”的值太大(实际值:35,最大值:30)
真的很奇怪这怎么会发生。有人能提供一些提示吗?我使用的是Oracle 11g,您可能只是在列中输入了错误的值,因为您没有在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
我还改变了显式连接语法,尽管这与问题无关…能否尝试使用空字符串“”我想您的值的顺序与表中的列不同。这是您应该将列指定为插入的一部分的原因之一。为了验证,你能在问题中添加表格描述吗?谢谢Alex,是的,我的订单被打乱了,这导致了数据不匹配。谢谢你的提醒