我在几个Oracle SQLCode中添加了可选的日期参数,除了在特定的SQL中结合使用了 queryForRowSet
我的SQL有可选的日期。
SELECT * from I where I.MYDATE <= nvl(?, I.MYDATE)
代码为可选日期发送null。
Object[] param= new Object[] {null};
SqlRowSet result = jdbcTemplate.queryForRowSet(QUERY, param);
如果我删除参数,SQL就会返回结果,但如果是null就不会返回结果了
你需要提供有关null类型的信息。
Object[] param = { null };
int[] paramType = { java.sql.Types.DATE };
SqlRowSet result = jdbcTemplate.queryForRowSet(QUERY, param, paramType);
或者,当参数类型被显式指定时,它应该可以工作(因为你的查询只有一个参数)。
java.sql.Date[] param = { null };
SqlRowSet result = jdbcTemplate.queryForRowSet(QUERY, param);