plsql里面执行正常,java运行报ORA-01722: 无效数字

贴代码:

<select id="getInfo" parameterClass="java.util.HashMap" resultClass="java.util.HashMap">
      <isEqual property="Type" compareValue="02">
        select a.*
        from INFO a
      where

    a.TYPE= #Type#
    </isEqual>
     <isEqual property="Type" compareValue="01">
      select a.*
       from INFO a 
     where

    a.TYPE= #Type#
          and to_number(a.END) >= to_number(#No#) 
     </isEqual>

</select>

当Type为01的时候报错:ORA-01722: 无效数字,,目标锁定and to_number(a.END) >= to_number(#No#)

但是将SQL复制到数据库执行的时候是可以的

问题原因:

在Type为02的时候a.END里面包含字符,Type为01的时候a.END里面只有数字

因为oracle条件是从下往上筛选的,所以to_number(a.END)在a.TYPE= #Type#之前,导致无效数字错误

处理方式:

将a.TYPE= #Type#条件放到最后

求解:

将SQL复制到数据库执行的时候不管条件是如何顺序都是可以的

如果有人知道的还请指教

时间: 2024-07-30 10:11:07

plsql里面执行正常,java运行报ORA-01722: 无效数字的相关文章

讨厌麻烦的ora 01722无效数字

webservice开发过程中,数据库由原来的oracle改为现在的sql server.然后重新调试,结果报出ora 01722无效数字的错误. 由于连接oracle数据库的时候并没有问题,所以一开始我以为是数据库不同,导致部分数据类型差异,(但又觉得有点离谱,切换数据库,不至于会导致这种错误吧) 经过排查,总结得出如下: 1.对于两个类型不匹配(一个数字类型,一个非数字类型,同下)的值进行赋值操作;2.两个类型不匹配的值进行比较操作(例如,"=");3.to_number函数中的值

Java编译报错:无效的源发行版

简介 IDEA编译Java项目报错:无效的源发行版9 目测原因编译等级不对,需要调整IDE中的编译等级相关参数 解决方案 打开设置,-->Java Compiler选择如图所示的选项进行相应调整 打开项目构建(Project Structure...)--> Project选择相应的编译级别 打开项目构建(Project Structure...)--> Modules选择相应的模块, 看下模块的编译级别是否对应 参考资料 IDEA: Error:java: 无效的源发行版: 9 原文地

java运行机制详细

JVM(Java虚拟机)一种用于计算设备的规范,可用不同的方式(软件或硬件)加以实现.编译虚拟机的指令集与编译微处理器的指令集非常类似.Java虚拟机包括一套字节码指令集.一组寄存器.一个栈.一个垃圾回收堆和一个存储方法域. Java虚拟机(JVM)是可运行Java代码的假想计算机.只要根据JVM规格描述将解释器移植到特定的计算机上,就能保证经过编译的任何Java代码能够在该系统上运行. 1.为什么要使用Java虚拟机 Java语言的一个非常重要的特点就是与平台的无关性.而使用Java虚拟机是实

用java运行Hadoop程序报错:org.apache.hadoop.fs.LocalFileSystem cannot be cast to org.apache.

用java运行Hadoop例程报错:org.apache.hadoop.fs.LocalFileSystem cannot be cast to org.apache.所写代码如下: package com.pcitc.hadoop; import java.io.IOException; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileSystem; import org.apache.h

Android 执行 gson.toJson(object) 报java.lang.StackOverflowError异常

如下面的代码,执行后报java.lang.StackOverflowError错误: MusicSavedInfo musicSavedInfo=new MusicSavedInfo(currentStartTime,openOrCloseFlag,currentDayFlags,currentSelectMusicTitle,currentSelectMusicPath,"1"); String jsonData=gson.toJson(musicSavedInfo); 我手机4.1

plsql 连接oralce数据库,报ora 12557 tns 协议适配器不可加载错误

使用plsql 连接oracle 数据库报ora 12557 错误: 解决方案: 1:首先确保服务中的service以及监听器都开启 2:F:\app\Administrator\product\11.2.0\dbhome_1\NETWORK\ADMIN下的tnsnames配置文件中的字符串连接是否配置 这个路径根据你的oracle安装路径有关 3:如果还是不行,删除注册表里面的环境变量oracle_home,默认只想路径 cmd——rededit—— HKEY_LOCAL_MECHINE——S

&lt;&lt;&lt; Tomcat运行报错IOException while loading persisted sessions: java.io.EOFException

解决方法:将work下面的文件清空,主要是*.ser文件,或者只是删除掉session.ser即可以解决. ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

java连接MySQL运行报错The server time zone value &#39;&#214;&#208;&#185;&#250;&#177;&#234;&#215;&#188;&#202;&#177;&#188;&#228;&#39; is unrecognized or represents more than

错误:The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents more than 原因:time zone 时区错误 解决方法: 1.使用root用户登录mysql,输入下面命令. show variables like '%time_zone%';SYSTEM为SQL默认美国时间,而我们中国要比他们迟8小时 2.SYSTEM为SQL默认美国时间,而我们中国要比他们迟8小时,因此将时区设置为当前系统时区即可,

create-react-app 创建的项目执行npm run eject后,运行报错

create-react-app 创建的项目执行npm run eject后,运行报错:Cannot find module '@babel/plugin-transform-react-jsx-source' 解决方法: 1.删除node_modules文件 2.执行yarn重新安装项目依赖 3.npm start 运行项目即可 原文地址:https://www.cnblogs.com/lihaohua/p/11387495.html