簡體   English   中英

存儲過程不返回結果集

[英]Stored procedure doesn't return a resultset

我正在嘗試使用此存儲過程獲取數據:

create procedure Proc_Member_Statement @Counter int,@TransDate datetime
as
declare @schemeNo int,@MemberNo int

select @schemeNo = SchemeNo,@MemberNo = MemberNo from Members where Counter = @Counter

exec Individualize @schemeNo,@MemberNo,@TransDate,0,0

exec RepMemberCertificate_DBN_One @schemeNo,@MemberNo,@TransDate,0

我的模特班:

    @NamedStoredProcedureQueries(
        {

                @NamedStoredProcedureQuery(
                        name = "getMemberStatement",
                        procedureName = "Proc_Member_Statement",
                        resultClasses = AccountStatement.class,
                        parameters = {
                                @StoredProcedureParameter(
                                        name = "Counter",
                                        mode = ParameterMode.IN,
                                        type = Long.class

                                ),
                                @StoredProcedureParameter(
                                        name = "TransDate",
                                        mode = ParameterMode.IN,
                                        type = Date.class

                                )
                        }
                ),
        }

)
@Entity
public class AccountStatement implements Serializable {

    @Id
    BigDecimal EmpOpBal;

    public BigDecimal getEmpOpBal() {
        return EmpOpBal;
    }

    public void setEmpOpBal(BigDecimal empOpBal) {
        EmpOpBal = empOpBal;
    }

    public BigDecimal getEmprOpBal() {
        return EmprOpBal;
    }

    public void setEmprOpBal(BigDecimal emprOpBal) {
        EmprOpBal = emprOpBal;
    }

    public BigDecimal getEmpCont() {
        return EmpCont;
    }

    public void setEmpCont(BigDecimal empCont) {
        EmpCont = empCont;
    }

    public BigDecimal getEmprCont() {
        return EmprCont;
    }

    public void setEmprCont(BigDecimal emprCont) {
        EmprCont = emprCont;
    }

    public BigDecimal getEmpVolCont() {
        return EmpVolCont;
    }

    public void setEmpVolCont(BigDecimal empVolCont) {
        EmpVolCont = empVolCont;
    }

    public BigDecimal getEmprVolCont() {
        return EmprVolCont;
    }

    public void setEmprVolCont(BigDecimal emprVolCont) {
        EmprVolCont = emprVolCont;
    }

    public BigDecimal getEmpInt() {
        return EmpInt;
    }

    public void setEmpInt(BigDecimal empInt) {
        EmpInt = empInt;
    }

    public BigDecimal getEmprInt() {
        return EmprInt;
    }

    public void setEmprInt(BigDecimal emprInt) {
        EmprInt = emprInt;
    }

    public BigDecimal getClosingBal() {
        return ClosingBal;
    }

    public void setClosingBal(BigDecimal closingBal) {
        ClosingBal = closingBal;
    }

    public BigDecimal getEmpCBal() {
        return EmpCBal;
    }

    public void setEmpCBal(BigDecimal empCBal) {
        EmpCBal = empCBal;
    }

    public BigDecimal getEmprCBal() {
        return EmprCBal;
    }

    public void setEmprCBal(BigDecimal emprCBal) {
        EmprCBal = emprCBal;
    }


    @Id
    BigDecimal EmprOpBal; // Employer Opening Balance
    @Id
    BigDecimal EmpCont; //Reg Employee
    @Id
    BigDecimal EmprCont; //Reg Employer
    @Id
    BigDecimal EmpVolCont; //Employee AVC
    @Id
    BigDecimal EmprVolCont; //Employer AVC
    @Id
    BigDecimal EmpInt; //Employee Interest
    @Id
    BigDecimal EmprInt; //Employer Interest
    @Id
    BigDecimal ClosingBal; //Closing Balance (Total)
    @Id
    BigDecimal EmpCBal; // Employee Closing Balance
    @Id
    BigDecimal EmprCBal; // Employer Closing Balance


}

現在,當我嘗試運行存儲過程以便從數據庫中獲取值時,我不斷收到此錯誤:

[java.lang.IllegalStateException:當前的CallableStatement ou不是ResultSet,但是調用了getResultList]

這是bean類:

public List<AccountStatement> getOpeningBalances(long memberId, Date date) {

        Calendar cal = Calendar.getInstance();
        cal.add(Calendar.MONTH, -3);
        jLogger.i("Calender >>>>> " + cal.getTime());

        StoredProcedureQuery query = this.entityManager.createNamedStoredProcedureQuery("getMemberStatement");
        query.setParameter("Counter", memberId);
        query.setParameter("TransDate", cal.getTime());
        query.execute();
        try {
            jLogger.i("Returned result >>>>>>>>>> " + query.getResultList());
            List<AccountStatement> openingBalances = query.getResultList();
            return openingBalances;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

我做錯了什么?

編輯:這是我在Microsoft SQL Server Management Studio中運行存儲過程時輸出的一部分:

樣本輸出

我打算使用系統中某些列中的數據。 謝謝。

我懷疑您期望的結果集來自何處,我懷疑來自Proc_Member_Statement中調用的存儲過程之一。

為了從Proc_Member_Statement中獲取結果集,您需要將存儲的proc中的結果集插入到臨時表中,然后在Proc_Member_Statement的末尾選擇其中的行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM