plsql insert into语句报错原因是?

INSERT INTO xs_td (tdid, personid, deptid, zsl, djlx, dwtxid,czyid,tdbh,tdrq,zt,czrq,czy,zje,storeid,khlx,yywyid,dz,lxr,dh,jbr,bz,jhfhrq,kdrq,thlx,isprompt,usetype,dwt_dwtxid,zslb,isorder,isfp,isfk,mobile,dxqk,fgsid) SELECT s_xs_td.nextval,tdid, personid, deptid, zsl, djlx, dwtxid,czyid,tdbh,tdrq,zt,czrq,czy,zje,storeid, khlx,yywyid,dz,lxr,dh,jbr,bz,jhfhrq,kdrq,thlx,isprompt,usetype,dwt_dwtxid,zslb,isorder,isfp,isfk,mobile,dxqk,5985FROM xs_td t where tdid=922628
在同一个数据库中,我要将A公司(fgsid)的销售订单数据复制到B公司(fgsid=5985),采用上面的语句执行时,报错 提示ORA-00913:值过多 是什么原因哦? 是不是我的执行语句错误?
最新回答
其实我过得并不好

2024-04-30 04:08:49

当oracle中报“ORA-00913: 值过多”错误的时候,那么说明写的sql语句中出了问题,这是由于我们向数据库中传递的参数的个数和数据库中相应的字段的数量不一致,所以就产生了一对多,或多对一的现象,

下面举个例子:

Insert into XX(?,?,?) values(?,?,?)

上面是我们自己写的sql语句,我们要插入的值是3个。而数据库中对表XX的定义字段却只有两个,即XX(?,?)。所以我们传的参数的个数多出一个,这样数据库就会报“ORA-00913: 值过多”。

所以我们需要把上面的sql语句改为

Insert into XX(?,?) values(?,?) 或者修改数据库表中字段的个数。
追问
在不同分公司,该xs_td这个表字段个数是都一样的,会不会是A公司这个表里的客户这个字段在B公司里没有 插入的时候也会报这个错误?
追答
是的,向数据库中传递的参数的个数和数据库中相应的字段的数量要一致。
追问
我的意思是A公司客户这个字段值是广州 B公司对应的这个字段值没有广州 那能插入吗?
有泪无悔

2024-04-30 15:30:10

下面的select语句中多了一列
select s_xs_td.nextval,
tdid,

这两列你需要去掉一个。
绝望透心凉

2024-04-30 09:20:37

select 的值是不是比上面的多,在仔细看看