求助,SQL 命令未正确结束,急啊!

chrissy21 2013-05-21 08:58:00
这是控制台的报错信息### The error may involve com.vip.mapper.boss.BossnavattrMapper.createNavAttr_SyncForBatch-Inline
### The error occurred while setting parameters
### SQL: INSERT INTO BossNavAttr_SYNC(ATTRID,NAVID,ATTRALTNAME,ATTRPROPERTY,PARENTATTRID,ORDERFLAG,FULLPATH,FULLNAME,PARENTOPTIONID,MAPID,REDOPTION,ATTRNOTE) select ATTRID,NAVID,ATTRALTNAME,ATTRPROPERTY,PARENTATTRID,ORDERFLAG,FULLPATH,FULLNAME,PARENTOPTIONID,MAPID,REDOPTION,ATTRNOTE from BossNavAttr WHERE MAPID = ? and navid in (249263)
### Cause: java.sql.SQLException: ORA-00933: SQL 命令未正确结束

===========================================
XML里面配置信息是这样:
<insert id="createNavAttr_SyncForBatch" parameterType="Object">

INSERT INTO BossNavAttr_SYNC(ATTRID,NAVID,ATTRALTNAME,ATTRPROPERTY,PARENTATTRID,ORDERFLAG,FULLPATH,FULLNAME,PARENTOPTIONID,MAPID,REDOPTION,ATTRNOTE)
select ATTRID,NAVID,ATTRALTNAME,ATTRPROPERTY,PARENTATTRID,ORDERFLAG,FULLPATH,FULLNAME,PARENTOPTIONID,MAPID,REDOPTION,ATTRNOTE
from BossNavAttr WHERE MAPID = #{mapid} and ${srcString}

</insert>

使用的是MyBatis+SpringMVC,数据库是ORACLE 10g,两张表名字分别是BossNavAttr_SYNC和BossNavAttr,这两张表的字段个数以及字段数据类型都是一样,我想在添加BossNavAttr_SYNC数据时,直接通过id查询BossNavAttr表,将查到的记录直接添加到BossNavAttr_SYNC表,这个SQL语句我在PL/SQL里面能够正常添加,而且查询也有数据,但是在Java里面就一直报错,请问是什么原因啊?
...全文
1051 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
火影之贺 2013-05-21
  • 打赏
  • 举报
回复
在SQL语句的最后加上一个分号;试试。 你用PL/SQL的command窗口,做insert操作的时候是需要带上分号;的,query窗口确实不需要。 INSERT INTO BossNavAttr_SYNC(ATTRID,NAVID,ATTRALTNAME,ATTRPROPERTY,PARENTATTRID,ORDERFLAG,FULLPATH,FULLNAME,PARENTOPTIONID,MAPID,REDOPTION,ATTRNOTE) select ATTRID,NAVID,ATTRALTNAME,ATTRPROPERTY,PARENTATTRID,ORDERFLAG,FULLPATH,FULLNAME,PARENTOPTIONID,MAPID,REDOPTION,ATTRNOTE from BossNavAttr WHERE MAPID = #{mapid} and ${srcString};
tianma630 2013-05-21
  • 打赏
  • 举报
回复
WHERE MAPID = #{mapid} and ${srcString}这句好有问题 应该改成 WHERE MAPID = #{mapid} and MAPID = ${srcString}
chrissy21 2013-05-21
  • 打赏
  • 举报
回复
引用 1 楼 u010255083 的回复:
MAPID = #{mapid} 后来被解析成 MAPID = ? 这里有问题。 是不是#{mapid}这里没有得到正确的值? 你直接把日志打印的含有MAPID = ?的sql语句到oracle执行肯定报ORA-00933: SQL 命令未正确结束。
那个没问题的,是有值的,在控制台有输出,我也试过写成MAPID = ${mapid},输出的SQL语句就是mapid=-1,值是有的,就是不知道为什么一直说未正确结束。
火影之贺 2013-05-21
  • 打赏
  • 举报
回复
MAPID = #{mapid} 后来被解析成 MAPID = ? 这里有问题。 是不是#{mapid}这里没有得到正确的值? 你直接把日志打印的含有MAPID = ?的sql语句到oracle执行肯定报ORA-00933: SQL 命令未正确结束。

67,515

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧