Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在SpringJDBC中使用select调用带有输入参数的函数_Java_Spring_Spring Jdbc - Fatal编程技术网

Java 在SpringJDBC中使用select调用带有输入参数的函数

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) 这是

我们正在尝试调用数据库中的函数。代码基于SpringJDBC。对于本地测试,我们使用H2,而在生产中它是postgresql。函数调用需要输入参数,而响应是具有多列的resultset

我们尝试了不同的解决方案:

  • 使用JdbcTemplate并通过select查询调用函数。问题是没有设置输入参数。除了不填充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)您发现问题了吗?