0

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])

すべてのパラメータが設定されていないこと。

4

1 に答える 1

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);
于 2013-02-20T13:28:41.940 に答える