java - ORA-00920 : | unabale to set INTERVAL via ibatis

标签 java sql oracle ibatis

好吧,经过大量研究后我仍然找不到答案

下面是我尝试通过 ibatis 执行的 SQL 查询

<select id="selectSQL" parameterClass="String" resultMap="get-resultMap">   
     SELECT * FROM MY_TABLE WHERE SYSDATE - INTERVAL #value#  DAY > LAST_UPD_DTIM
 </select>

这会引发错误

--- Cause: java.sql.SQLSyntaxErrorException: ORA-00920: invalid relational operator

但是当我对间隔值进行硬编码时,它工作得很好

SELECT * FROM MY_TABLE WHERE SYSDATE - INTERVAL '90'  DAY > LAST_UPD_DTIM 

这里出了什么问题?

最佳答案

好吧,终于我找到了问题所在。这里的问题是表达式

INTERVAL -'90' DAY

是一个文字,所以我们不能用变量(参数)替换它的一部分

为了解决这个问题,我使用了函数 NUMTODSINTERVAL

<select id="selectSQL" parameterClass="String" resultMap="get-resultMap">   
   SELECT * FROM MY_TABLE WHERE SYSDATE - NUMTODSINTERVAL(#value#, 'DAY') > LAST_UPD_DTIM
 </select>

关于java - ORA-00920 : | unabale to set INTERVAL via ibatis,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37354535/

相关文章:

php - 重复键上的 Mysql 仅当 BlahVAl < BlahRowVal 时更新表

sql - 带有编号数据库名称的跨数据库查询

oracle - 如何使用 Oracle 全文搜索在 XML CLOB 中搜索单词 'IN'?

sql - ORA-00936: 缺少 '=' 的表达式

java - AppEngine 在尝试连接到 Google Cloud MySql 实例时出现 "Communication link failure"错误

java - 使用 Java 的 Unsafe 实现动态类中的接口(interface)

java - 如何使用java Spark进行获取请求

php - 如何计算属于另一列中不同值的列中的所有相同值

oracle - Oracle TNS:网络服务名称指定不正确

java - 确实需要在 appEngine 中上传文件