从JPA调用存储过程时无法获取返回值

时间:2018-11-23 11:57:10

标签: sql-server jpa stored-procedures spring-data-jpa spring-data

SP看起来像:-

CREATE PROCEDURE <spnamegoeshere>
AS
BEGIN
/*  Some code goes here */
return 102323   /*Need to get this value*/
END
GO

我们正在使用

通过JPA执行存储过程(托管在SQL SERVER中)。
createStoredProcedureQuery("spnamegoeshere");

我需要获取返回的值“ 102323 ”。不幸的是,使用上述命令无法获得。

稍作搜索后,获得此链接。

https://docs.microsoft.com/en-us/sql/connect/jdbc/using-a-stored-procedure-with-a-return-status?view=sql-server-2017

根据上述文档,如果使用,我可以获取该值。

CallableStatement

是否可以使用JPA进行同样的操作,无需修改SP

有人可以在这里分享一些意见。

1 个答案:

答案 0 :(得分:0)

这对我有用:

  @Test
  public void testProc() {
    SimpleJdbcCall call = new SimpleJdbcCall(jdbcTemplate);
    Map<String, Object> map = call.withProcedureName("retValTestProc").withReturnValue().execute();
    Assert.assertNotNull("Expected not null result but it is", Objects.nonNull(map));
    Assert.assertTrue("Expected size = 1, actual=" + map.size(), map.size() == 1);
    Assert.assertTrue("Expected value=102323, actual=" + map.get("RETURN_VALUE"),
                      Objects.equals(102323, map.get("RETURN_VALUE")));
  }

retValTestProc = <spnamegoeshere>

您还可以使用SimpleJdbcCall构造函数创建DataSource