queryForRowSet不返回日期参数为空的结果。

问题描述 投票:1回答:1

我在几个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就不会返回结果了

java oracle jdbctemplate optional-parameters
1个回答
1
投票

你需要提供有关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);
© www.soinside.com 2019 - 2024. All rights reserved.