好的,经过多次研究后我找不到答案
以下是我尝试通过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
这里有什么问题?
答案 0 :(得分:1)
好的,最后我发现了这个问题。这里的问题是表达式
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>