【问题标题】:Unable to retrieve Stored Procedure Return value through Java无法通过 Java 检索存储过程返回值
【发布时间】:2019-01-16 12:47:51
【问题描述】:

我正在尝试通过 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 检索返回值吗?

【问题讨论】:

标签: java sql-server hibernate sql-server-2008 jpa


【解决方案1】:

如果你选择返回一个值,你必须这样做:

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);

【讨论】:

    猜你喜欢
    • 2012-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多