在Nhibernate

时间:2017-11-03 19:16:22

标签: c# mysql stored-procedures nhibernate

我想在NHibernate中执行一个简单的MySQL存储过程调用,如下所示:

public void ExecuteProcedure(long idCell)
{
    using (ISession session = this.iSessionFactory.OpenSession())
    {
        using (ITransaction transaction = session.BeginTransaction())
        {
            try
            {
                string sQL = "call test(:idCell)";
                IQuery query = session.CreateSQLQuery(sQL);
                query.SetParameter("idCell", idCell);
                query.UniqueResult();
            }
            catch (Exception ex)
            {
                transaction.Rollback();
            }
        }
    }
}

下面是存储过程:

CREATE PROCEDURE `test`(IN `testing` BIGINT)
LANGUAGE SQL
NOT DETERMINISTIC
CONTAINS SQL
SQL SECURITY DEFINER
COMMENT ''

BEGIN
    select * from tbcell where id = testing;
END

返回以下错误:

could not execute query
[ call test(?p0); ]
  Name:idCell - Value:18
[SQL: call test(?p0);]

出了什么问题?谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

我知道了。我正在访问远程用户的数据库,并且需要对存储过程的授权访问(我认为仅对模式的授予访问权限就足够了)。 nHibernate没有返回有关权限的错误,因此,我没有将问题与此相关联。抱歉,感谢您的关注。

GRANT EXECUTE ON PROCEDURE myDB.Test TO 'testUser'@'192.168.101.100';
FLUSH PRIVILEGES;