我想调用一个返回ClassID
和Student id
我的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 :(得分: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);