我想在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);]
出了什么问题?谢谢你的帮助。
答案 0 :(得分:0)
我知道了。我正在访问远程用户的数据库,并且需要对存储过程的授权访问(我认为仅对模式的授予访问权限就足够了)。 nHibernate没有返回有关权限的错误,因此,我没有将问题与此相关联。抱歉,感谢您的关注。
GRANT EXECUTE ON PROCEDURE myDB.Test TO 'testUser'@'192.168.101.100';
FLUSH PRIVILEGES;