2016-07-22 4 views
0

Я пытаюсь получить данные с помощью этой хранимой процедуры:Хранимая процедура не возвращает результирующий

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: Current CallableStatement ou не был ResultSet, но getResultList был вызван]

Вот класс боба:

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

Что я делаю неправильно?

EDIT: Вот часть вывода при запуске хранимой процедуры в Microsoft SQL Server Management Studio:

Sample Output

Я намерен использовать данные из некоторых колонок в системе. Спасибо.

+0

Каков ожидаемый результат этой хранимой процедуры? – IntoNET

+0

Эй, я отредактировал вопрос. – Mathenge

ответ

0

По-прежнему неясно, откуда берутся результаты, ожидаемые от вас, я подозреваю, что из одной из хранимых процедур вызывается в Proc_Member_Statement.

Чтобы получить результаты из Proc_Member_Statement, вам нужно будет вставить результирующий набор из сохраненного proc во временную таблицу, а затем в конец Proc_Member_Statement ВЫБРАТЬ строки из него.