我正在尝试通过 JPA 从 sql server 2008 编写的存储过程中检索结果。我遇到过一种非常荒谬的情况,我能够从末尾有 select 语句的存储过程中检索结果。在这种情况下,我可以通过调用
来检索结果storedProcedureQuery.getSingleResult();
但是,如果存储过程最后包含返回值的 return 语句,我将无法获得任何结果,并且相同的查询将返回空指针异常。
返回值的存储过程如下所示:-
CREATE PROCEDURE callSP
@value int
AS
BEGIN
SET NOCOUNT ON;
select 1;
END
GO
导致错误的存储过程如下所示:-
CREATE PROCEDURE callSP
@value int
AS
BEGIN
SET NOCOUNT ON;
RETURN 1;
END
GO
还有其他方法可以通过 JPA 检索返回值吗?
最佳答案
如果你选择返回一个值,你必须这样做:
CallableStatement storedProcedureQuery = con.prepareCall("{? = call my_procedure (?,?)}");
storedProcedureQuery.execute();
int groupId = cs.getInt(1);`
但是,如果您返回 ResultSet,则必须执行以下操作:
ResultSet rs = storedProcedureQuery.executeQuery();
if (rs.next())
int groupId = rs.getInt(1);
关于java - 无法通过 Java 检索存储过程返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51760483/