问题描述
最近项目老大分配了个任务,用Struts2+Spring+Mybatis完成,但是在调试时遇到下面问题ERROR[http-8086-2](Slf4jLogger.java:37)-Exceptionoccurredduringprocessingrequest:
解决方案二:
Errorqueryingdatabase.Cause:java.sql.SQLException:ORA-00936:缺失表达式
解决方案三:
Theerrormayexistinssm/fbms/dao/FlightDao.xml
解决方案四:
Theerrormayinvolvessm.fbms.dao.FlightDao.searchFlightList-Inline
解决方案五:
Theerroroccurredwhilesettingparameters
解决方案六:
SQL:selectflightidasflightId,to_char(execdate,'yyyy-mm-dd')asexecDate,flightnoasflightNo,casewhenisoffin='A'then'进港'else'出港'endasisOffin,casewhenflightattr='2401'then'国际'whenflightattr='2403'then'国内'whenflightattr='2404'then'专机'endasflightAttr,taskastask,aerocraftnoasaerocraftNo,crafttypeascraftType,to_char(startrealtakeofftime,'yyyy-mm-ddhh24:mi')asstartRealTakeoffTime,to_char(terminalreallandintime,'yyyy-mm-ddhh24:mi')asterminalRealLandinTime,airlineshortasairlineShort,(selectcnshortnamefromsbd_flightstatewherecode=innerprovidingstate)asinnerProvidingState,(selectcnshortnamefromsbd_flightstatewherecode=innerabnormalstate)asinnerAbnormalState,(selectcnshortnamefromsbd_flightstatewherecode=intlinnerprovidingstate)asintlInnerProvidingState,(selectcnshortnamefromsbd_flightstatewherecode=intlinnerabnormalstate)fromSOR_FLIGHTINFOwhere
解决方案七:
Cause:java.sql.SQLException:ORA-00936:缺失表达式;badSQLgrammar[];nestedexceptionisjava.sql.SQLException:ORA-00936:缺失表达式org.springframework.jdbc.BadSqlGrammarException:
解决方案八:
Errorqueryingdatabase.Cause:java.sql.SQLException:ORA-00936:缺失表达式
解决方案九:
Theerrormayexistinssm/fbms/dao/FlightDao.xml
解决方案十:
Theerrormayinvolvessm.fbms.dao.FlightDao.searchFlightList-Inline
解决方案十一:
Theerroroccurredwhilesettingparameters
解决方案十二:
SQL:selectflightidasflightId,to_char(execdate,'yyyy-mm-dd')asexecDate,flightnoasflightNo,casewhenisoffin='A'then'进港'else'出港'endasisOffin,casewhenflightattr='2401'then'国际'whenflightattr='2403'then'国内'whenflightattr='2404'then'专机'endasflightAttr,taskastask,aerocraftnoasaerocraftNo,crafttypeascraftType,to_char(startrealtakeofftime,'yyyy-mm-ddhh24:mi')asstartRealTakeoffTime,to_char(terminalreallandintime,'yyyy-mm-ddhh24:mi')asterminalRealLandinTime,airlineshortasairlineShort,(selectcnshortnamefromsbd_flightstatewherecode=innerprovidingstate)asinnerProvidingState,(selectcnshortnamefromsbd_flightstatewherecode=innerabnormalstate)asinnerAbnormalState,(selectcnshortnamefromsbd_flightstatewherecode=intlinnerprovidingstate)asintlInnerProvidingState,(selectcnshortnamefromsbd_flightstatewherecode=intlinnerabnormalstate)fromSOR_FLIGHTINFOwhere
解决方案十三:
Cause:java.sql.SQLException:ORA-00936:缺失表达式;badSQLgrammar[];nestedexceptionisjava.sql.SQLException:ORA-00936:缺失表达式我的.xml数据库查询语句如下<selectid="searchFlightList"parameterType="ssm.fbms.bean.FlightBean"resultType="ssm.fbms.dto.FlightDto">selectflightidasflightId,to_char(execdate,'yyyy-mm-dd')asexecDate,flightnoasflightNo,casewhenisoffin='A'then'进港'else'出港'endasisOffin,casewhenflightattr='2401'then'国际'whenflightattr='2403'then'国内'whenflightattr='2404'then'专机'endasflightAttr,taskastask,aerocraftnoasaerocraftNo,crafttypeascraftType,to_char(startrealtakeofftime,'yyyy-mm-ddhh24:mi')asstartRealTakeoffTime,to_char(terminalreallandintime,'yyyy-mm-ddhh24:mi')asterminalRealLandinTime,airlineshortasairlineShort,(selectcnshortnamefromsbd_flightstatewherecode=innerprovidingstate)asinnerProvidingState,(selectcnshortnamefromsbd_flightstatewherecode=innerabnormalstate)asinnerAbnormalState,(selectcnshortnamefromsbd_flightstatewherecode=intlinnerprovidingstate)asintlInnerProvidingState,(selectcnshortnamefromsbd_flightstatewherecode=intlinnerabnormalstate)fromSOR_FLIGHTINFOwhereexecdate<![CDATA[>=]]>to_date(#{execDateStart,jdbcType=VARCHAR},'yyyy-mm-dd')andexecdate<![CDATA[<=]]>to_date(#{execDateEnd,jdbcType=VARCHAR},'yyyy-mm-dd')<iftest="isOffin!=nullandisOffin!=''">andisoffin=#{isOffin}</if><iftest="airlinesId!=nullandairlinesId!=''">andairlinesid=#{airlinesId,jdbcType=NUMERIC}</if><iftest="flightNo!=nullandflightNo!=''">andflightno=#{flightNo,jdbcType=NUMERIC}</if><iftest="task!=nullandtask!=''">andtask=#{task,jdbcType=VARCHAR}</if><iftest="flightAttr!=nullandflightAttr!=''">andflightattr=#{flightAttr,jdbcType=VARCHAR}</if><iftest="craftTypeId!=nullandcraftTypeId!=''">andcrafttypeid=#{craftTypeId,jdbcType=VARCHAR}</if><iftest="airlineShort!=nullandairlineShort!=''">andairlineshort=#{airlineShort,jdbcType=VARCHAR}</if></select>
解决方案
解决方案十四:
execdate<![CDATA[>=]]>to_date(#{execDateStart,jdbcType=VARCHAR},'yyyy-mm-dd')andexecdate<![CDATA[<=]]>to_date(#{execDateEnd,jdbcType=VARCHAR},'yyyy-mm-dd')execdate这是什么东东>=用>=<=用<=转义即可不需要写<![CDATA[>=]]>这个tryagain
解决方案十五:
最好就是把sql复制出去在客户端执行一下,便于找到问题,sql的某个位置写错了
解决方案:
我测试的时候就没用那个查询条件,只用了<iftest="isOffin!=nullandisOffin!=''">isoffin=#{isOffin}</if>做测试,其他注释了的
解决方案:
客服端可以的
解决方案:
引用1楼cbxjj的回复:
execdate<![CDATA[>=]]>to_date(#{execDateStart,jdbcType=VARCHAR},'yyyy-mm-dd')andexecdate<![CDATA[<=]]>to_date(#{execDateEnd,jdbcType=VARCHAR},'yyyy-mm-dd')execdate这是什么东东>=用>=<=用<=转义即可不需要写<![CDATA[>=]]>这个tryagain
我测试的时候就没用那个查询条件,只用了<iftest="isOffin!=nullandisOffin!=''">isoffin=#{isOffin}</if>做测试,其他注释了的
解决方案:
看看是不是where后面连了个and造成的