Java 在SpringJDBC中使用select调用带有输入参数的函数
我们正在尝试调用数据库中的函数。代码基于SpringJDBC。对于本地测试,我们使用H2,而在生产中它是postgresql。函数调用需要输入参数,而响应是具有多列的resultset 我们尝试了不同的解决方案:Java 在SpringJDBC中使用select调用带有输入参数的函数,java,spring,spring-jdbc,Java,Spring,Spring Jdbc,我们正在尝试调用数据库中的函数。代码基于SpringJDBC。对于本地测试,我们使用H2,而在生产中它是postgresql。函数调用需要输入参数,而响应是具有多列的resultset 我们尝试了不同的解决方案: 使用JdbcTemplate并通过select查询调用函数。问题是没有设置输入参数。除了不填充inputVal之外,查询工作正常 jdbcTemplate.queryForObject(“select*from funct(?)、new RowMapper()、inputVal) 这是
jdbcTemplate.queryForObject(“select*from funct(?)、new RowMapper()、inputVal)代码>
这是异常消息:
Exception calling user-defined function: "func(null): null"; SQL statement
使用SimpleJDBCall,带有FunctionName和declare参数。当我们尝试运行此操作时:
Map result=newsimplejdbccall(jdbcTemplate)
.withFunctionName(“func”)
.declareParameters(新的SqlParameter(“inputVal”,Types.NUMERIC))
.executeFunction(Map.class,inputVal)代码>
它失败,并显示错误消息:
parameter count: 0)" not found; SQL statement:
有人知道我们如何解决这个问题吗?也许这是个愚蠢的问题,但是。。您确定inputVal
不为空吗?您可以发布函数签名吗?我们在调试时检查了该值,它已设置。该函数在H2中的定义如下(就像一个静态java方法):publicstaticresultsetfunc(bigdecimalinputval)您发现问题了吗?