plsql insert into语句报错原因是? 50

INSERTINTOxs_td(tdid,personid,deptid,zsl,djlx,dwtxid,czyid,tdbh,tdrq,zt,czrq,czy,zje,... 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:值过多 是什么原因哦? 是不是我的执行语句错误?
展开
 我来答
约定夏一季
2014-01-09
知道答主
回答量:19
采纳率:0%
帮助的人:4.2万
展开全部
当oracle中报“ORA-00913: 值过多”错误的时候,那么说明写的sql语句中出了问题,这是由于我们向数据库中传递的参数的个数和数据库中相应的字段的数量不一致,所以就产生了一对多,或多对一的现象,

下面举个例子:

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

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

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

Insert into XX(?,?) values(?,?) 或者修改数据库表中字段的个数。
更多追问追答
追问
在不同分公司,该xs_td这个表字段个数是都一样的,会不会是A公司这个表里的客户这个字段在B公司里没有 插入的时候也会报这个错误?
追答
是的,向数据库中传递的参数的个数和数据库中相应的字段的数量要一致。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
renfengjun1986
2014-01-09 · 知道合伙人软件行家
renfengjun1986
知道合伙人软件行家
采纳数:925 获赞数:1553
中国地质调查局特聘数据库专家 CSDN博客专家 百度知道数据库行家 炼数成金版主 想了解更多请关注我的博客:

向TA提问 私信TA
展开全部
下面的select语句中多了一列
select s_xs_td.nextval,
tdid,

这两列你需要去掉一个。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友823f08a
2014-01-09 · TA获得超过185个赞
知道答主
回答量:130
采纳率:0%
帮助的人:57万
展开全部
select 的值是不是比上面的多,在仔细看看
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式