在查询中使用带间隔的prepareStatement时出错 [英] Getting error when using prepareStatement with interval in query
问题描述
运行此查询时 SELECT SYSDATE + INTERVAL'7'DAY FROM DUAL;
在 prepareStatement
中,如下
When running this query SELECT SYSDATE + INTERVAL '7' DAY FROM DUAL;
in a prepareStatement
like this
PreparedStatement ps = connection.prepareStatement("select sysdate + interval ? day from dual" );
ps.setString(1, "7");
ps.executeQuery();
它会抛出异常,语法不好,显然是,因为我是能够在sql-developer中运行相同的查询。
It will throw an exception, that the syntax is not good, it clearly is, cuz i'm able to run the same query in sql-developer.
这是 PreparedStatement
中的错误吗?我可以将预备语句与间隔一起使用吗?
Is this a bug in PreparedStatement
? can i use prepared statements together with interval?
推荐答案
整个表达式 INTERVAL'7'DAY
是一个文字,你不能简单地用变量(参数)替换它的一部分。请改用函数 NUMTODSINTERVAL(?,'DAY')
。
The entire expression INTERVAL '7' DAY
is a literal, you cannot simply replace a part of it with a variable (parameter). Use the function NUMTODSINTERVAL(?,'DAY')
instead.
这篇关于在查询中使用带间隔的prepareStatement时出错的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!