hibernate调用mysql存储过程

时间:2012-07-20 10:45:12

标签: nhibernate stored-procedures

我有一个存储过程,其中包含两个返回int的参数。

我的mapping.hbm.xml

    <sql-query name="CreateAttribute">
        <query-param name="idAttrType" type="int"/>
        <query-param name="idSystemUser" type="int"/>
        call CreateAttribute :idAttrType,:idSystemUser
    </sql-query>

C#用法

    var t = session.GetNamedQuery("CreateAttribute");
    t.SetInt32("idAttrType", 12);
    t.SetInt32("idSystemUser",int.Parse(id));
    var result = t.List();

然后我收到了以下信息:

[SQL:调用CreateAttribute?p0,?p1] ---&gt; MySql.Data.MySqlClient.MySqlException:您的SQL语法有错误;

有什么建议吗?

2 个答案:

答案 0 :(得分:0)

不应该: -

   <sql-query name="CreateAttribute">
        <query-param name="idAttrType" type="int"/>
        <query-param name="idSystemUser" type="int"/>
        call CreateAttribute(:idAttrType,:idSystemUser);
    </sql-query>

注意参数附近的大括号。

编辑对你的MySql数据库运行它,它运行吗?

call CreateAttribute(0,0);

答案 1 :(得分:0)

修改了以下呼叫 SELECT调用CreateAttribute(0,0); - 它工作了

现在新的映射是

    <sql-query name="CreateAttribute">
       <query-param name="idAttrType" type="int"/>
       <query-param name="idSystemUser" type="int"/>
       select CreateAttribute(:idAttrType,:idSystemUser);
    </sql-query>