在查询中使用带间隔的prepareStatement时出错

Ely*_* M. 5 java oracle prepared-statement intervals

SELECT SYSDATE + INTERVAL '7' DAY FROM DUAL;prepareStatement这样的方式运行此查询时

    PreparedStatement ps =  connection.prepareStatement("select sysdate + interval ? day from dual" );      
    ps.setString(1, "7");
    ps.executeQuery();
Run Code Online (Sandbox Code Playgroud)

它会抛出异常,语法不好,显然是,因为我能够在sql-developer中运行相同的查询.

这是一个错误PreparedStatement吗?我可以将预备语句与间隔一起使用吗?

mus*_*cio 12

整个表达式INTERVAL '7' DAY是一个文字,你不能简单地用变量(参数)替换它的一部分.请改用此功能NUMTODSINTERVAL(?,'DAY').