Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 5 sur 5
  1. #1
    Membre à l'essai
    Inscrit en
    novembre 2007
    Messages
    70
    Détails du profil
    Informations personnelles :
    Âge : 26

    Informations forums :
    Inscription : novembre 2007
    Messages : 70
    Points : 23
    Points
    23

    Par défaut NHibernate select inaccessible

    Bonjour,

    J'ai beaucoup de mal à trouver un titre clair pour mon problème. Voici une requête que j'essaie d'exécuter dans mon mapping NHibernate
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <sql-query name="spInventoryMove">
      <![CDATA[
        declare @intAdjID int
     
        exec spInventoryMove :ProID :LocID
     
        select * from tblAdj where adjID = @intAdjID
       ]]>
        <return class="V2K.WMS.Data.InventoryAdjData, V2K.WMS.Data"/>
      </sql-query>
    Le problème est quand j'appelle cette requête dans mon code :

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
     RepositoryExceptionWrapper.Wrap(GetType(), delegate()
                {
                    IDbCommand command = CurrentSession.Connection.CreateCommand();
     
                    command.CommandText = "spInventoryMove";
                    command.CommandType = CommandType.StoredProcedure;
     
                    IDbDataParameter parameter = command.CreateParameter();
                    parameter.ParameterName = "@ProID";
                    parameter.Value = ProID;
                    command.Parameters.Add(parameter);
     
                    parameter = command.CreateParameter();
                    parameter.ParameterName = "@LocID";
                    parameter.Value = LocID;
                    command.Parameters.Add(parameter);
     
                    //command.ExecuteNonQuery();
                    IDataReader reader = command.ExecuteReader();
                    if (reader.Read())
                    {
                        result = new InventoryAdjData();
                        result.Id = reader[0];
                    }
     
                    reader.Close();
                });
    Seconde methode :
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    RepositoryExceptionWrapper.Wrap(GetType(), delegate()
    {
       IQuery query = CurrentSession.GetNamedQuery("spInventoryMove");
     
       query.SetString("ProID", ProID);
       query.SetNullableInt32("LocID", LocID);
     
       result = query.UniqueResult<InventoryAdjData>();
    });
    Je n'ai que le retour de la stored procedure, ce que j'aimerais c'est récupérer le select... comment puis-je faire ? (dans SQL Server, j'ai 2 résultats : le retour de la stored proc et celui du select).

  2. #2
    Rédacteur

    Avatar de WOLO Laurent
    Homme Profil pro Laurent WOLO
    Architecte de base de données
    Inscrit en
    mars 2003
    Messages
    2 728
    Détails du profil
    Informations personnelles :
    Nom : Homme Laurent WOLO
    Âge : 37
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Finance

    Informations forums :
    Inscription : mars 2003
    Messages : 2 728
    Points : 4 329
    Points
    4 329

    Par défaut

    Regarde du côté de la méthode
    Code :
    IDataReader.NextResult();
    et tu trouveras ton bonheur.

    Découvrez la FAQ de MS SQL Server.
    La chance accorde ses faveurs aux esprits avertis !

  3. #3
    Membre à l'essai
    Inscrit en
    novembre 2007
    Messages
    70
    Détails du profil
    Informations personnelles :
    Âge : 26

    Informations forums :
    Inscription : novembre 2007
    Messages : 70
    Points : 23
    Points
    23

    Par défaut

    J'ai tout essayé et je n'ai pas trouvé de solution (j'avais bien entendu pensé au NextResult() sans succès )... jusqu'à ce que le développeur qui s'occupe des stored procedures me dise "Je peux te changer les retours si tu veux" -_-

    Mais merci tout de même pour l'aide. Pour ceux qui se retrouveraient dans la même situation la seule méthode que j'ai trouvé est de changer le retour de la procédure.

  4. #4
    Rédacteur

    Avatar de WOLO Laurent
    Homme Profil pro Laurent WOLO
    Architecte de base de données
    Inscrit en
    mars 2003
    Messages
    2 728
    Détails du profil
    Informations personnelles :
    Nom : Homme Laurent WOLO
    Âge : 37
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Finance

    Informations forums :
    Inscription : mars 2003
    Messages : 2 728
    Points : 4 329
    Points
    4 329

    Par défaut

    Est ce que tu avais activé MARS dans ta chaine de connexion ?

    Découvrez la FAQ de MS SQL Server.
    La chance accorde ses faveurs aux esprits avertis !

  5. #5
    Membre Expert
    Inscrit en
    mars 2005
    Messages
    1 249
    Détails du profil
    Informations forums :
    Inscription : mars 2005
    Messages : 1 249
    Points : 1 884
    Points
    1 884

    Par défaut

    La réponse est que tu devrais créer un mapping d'entité et spécifier la SP qui s'en occupe.

    Ca ne peut donc pas marcher, il faut juste que le select soit dans la SP et tu n'as pas besoin de déclarer des paramétres.

    De l'aide

+ Répondre à la discussion
Cette discussion est résolue.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •