Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL错误:ORA-12899:在30个字符的列中插入null时溢出_Sql_Oracle11g_Insert_Overflow - Fatal编程技术网

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

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”

我正在对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”的值太大(实际值: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,是的,我的订单被打乱了,这导致了数据不匹配。谢谢你的提醒