2013-02-19 2 views
0

Я хочу вызвать хранимую процедуру, возвращающие ClassID и Student idCalling параметризованных хранимой процедуры с помощью NHibernate

Моего отображения XML является

<sql-query name="GetClassRevenuebyStudent_Sea"> 
    <return-scalar column="totalRevenew" type="System.String" /> 
    exec GetClassRevenue_Sea ClassID, StudentID 
</sql-query> 

И моей хранимой процедура вызова код

public static double Student_ShowRevenue(string classid, string studentid) 
{ 
    ISession session = NHibernateHelper.GetSession(); 
    ITransaction trans = session.BeginTransaction(); 
    IQuery query = (IQuery)session.GetNamedQuery("GetClassRevenuebyStudent_Sea"); 
    query.SetParameter("ClassID", classid); 
    query.SetParameter("StudentID", studentid); 

    return Convert.ToDouble(query.List()[0]); 
} 

Но когда я запускаю приложение, он дает исключение на линии

return Convert.ToDouble(query.List()[0]) 

что все параметры не установлены.

+0

вы пробовали определение вашего SP как ехес GetClassRevenue_Sea: Classid,: StudentID (с двоеточием перед вашими параметрами имен)? – jbl

+0

Какое исключение? (можете ли вы дать полное исключение?) – Automatico

+0

'QueryException: все параметры не установлены. 'Исключение типа. – rae1

ответ

1

Вы должны поместить двоеточие перед вашими ClassId и StudentId свойств в вашем отображении, чтобы указать, что они являются заполнители для параметров, которые вы собираетесь установить:

<sql-query name="GetClassRevenuebyStudent_Sea"> 
    <return-scalar column="totalRevenew" type="System.String" /> 
    exec GetClassRevenue_Sea :ClassID, :StudentID <!-- notice the colon (:) --> 
</sql-query> 

, то вы можете позвонить по имени запроса из вашего кода,

IQuery query = session.GetNamedQuery("GetClassRevenuebyStudent_Sea") 
    .SetParameter("ClassID", classid) 
    .SetParameter("StudentID", studentid); 
Смежные вопросы