2017-11-03 4 views
0

Ich mag eine einfachen MySQL Stored Procedure Call in NHibernate, wie dies auszuführen:Ausführen einfachen Prozeduraufrufes in Nhibernate

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(); 
      } 
     } 
    } 
} 

Unten die gespeicherte Prozedur:

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

BEGIN 
    select * from tbcell where id = testing; 
END 

die folgenden Fehler Diese Rück :

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

Was ist los? Danke für die Hilfe.

+0

Können Sie die Fehlerdetails anzeigen? – Najera

+0

Vielen Dank für Ihre Aufmerksamkeit Najera. Leider gibt es im Fehlerfenster keine Details mehr. –

+0

Dieser Befehl (theoretisch) ist richtig? Oder gibt es einen besten Weg, dies zu tun? –

Antwort

0

Ich habe es Jungs. Ich greife auf die Datenbank eines entfernten Benutzers zu, und es wurde ein Gewährungszugriff für die gespeicherten Prozeduren benötigt (ich dachte, dass der Zugriff auf das Schema nur gewährt wurde). Der nHibernate gab keinen Fehler in Bezug auf Berechtigungen zurück und damit assoziierte ich das Problem nicht. Entschuldigung und danke für die Aufmerksamkeit.

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