SQL Server的存储过程返回值的方式跟Oracle有蛮大的区别,想通过JPA去获取存储过程的返回值,需要特殊的实现。代码如下。

@Autowired
private EntityManager entityManager;
... ....
StoredProcedureQuery query = entityManager
.createStoredProcedureQuery("USP_GET_SJJ")
.registerStoredProcedureParameter("jktablename", String.class, ParameterMode.IN)
.registerStoredProcedureParameter("xhstr", String.class, ParameterMode.IN)
.registerStoredProcedureParameter("returnstr", String.class, ParameterMode.OUT)
.setParameter("jktablename", jktablename)
.setParameter("xhstr", xhs);
query.execute();
String returnstr = (String) query.getOutputParameterValue("returnstr");
  • 注入EntityManager
  • 注册参数
  • 设置入参值
  • 执行查询
  • 获取返回值