[英]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.