2010-07-22 7 views
0

La version actuelle de NHibernate (v2.1.2) prend-elle en charge l'accès à la sortie de la procédure stockée Oracle REFCURSOR en plus de à un paramètre de sortie?NHibernate pour accéder à la procédure stockée Oracle REFCURSOR et au paramètre de sortie

Je peux accéder au refcursor de sortie très bien avec mon code. Cependant, je ne suis pas sûr que je peux accéder au paramètre de sortie supplémentaire dans la même procédure stockée.

Un exemple de syntaxe d'appel serait grandement apprécié. Merci.

Répondre

1

Non, ce n'est pas le cas. Un seul refcursor est supporté et il doit être le premier paramètre du sproc.

Vous pouvez toujours obtenir IDbConnection à partir de la session, puis utiliser ODP.Net simple pour de tels scénarios (vous perdez nh fonctionnalité) ou plutôt modifier la procédure stockée.

0

J'ai trouvé une solution pour appeler les anciennes procédures stockées avec NHibernate.

Je ne pense pas que ce soit la meilleure façon, mais nous n'avons normalement pas le temps de factoriser tout, donc:

using (ITransaction transaction = _session.BeginTransaction()) { 
    IDbCommand command = new OracleCommand(); 
    command.Connection = _session.Connection; 

    command.CommandType = CommandType.StoredProcedure; 
    command.CommandText = "pk_package.pr_procedure"; 

    // Set input parameters 
    var param1 = new OracleParameter("@param1", OracleDbType.Decimal) {Value = someField}; 
    var param2 = new OracleParameter("@param2", OracleDbType.Decimal) {Value = 1}; 

    command.Parameters.Add(param1); 
    command.Parameters.Add(param2); 

    // Execute the stored procedure 
    command.ExecuteNonQuery(); 
    transaction.Commit(); 
} 
Questions connexes