IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Accès aux données Discussion :

[C#] Comment récupérer la valeur de retour d'une procédure stockée ?


Sujet :

Accès aux données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert Avatar de Jinroh77
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2006
    Messages
    1 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Février 2006
    Messages : 1 964
    Par défaut [C#] Comment récupérer la valeur de retour d'une procédure stockée ?
    Bonjour,
    J'essaye de récupérer la valeur de retour d'une procédure stockée mais impossible d'y avoir accès.

    Ma procédure me renvoie 2 résultats de select + la valeur de retour.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    public SqlDataReader StoredProcedure(string sProcedureName,
     List<string[]> sListeParam)
    {
        SqlCommand Command = new SqlCommand(sProcedureName,
     cConnection.cpCurseur);
        Command.CommandType = CommandType.StoredProcedure;
     
        for (int i = 0; i < sListeParam.Count; i++)
        {
            SqlParameter Parametre = Command.Parameters.AddWithValue
    (sListeParam[i][0], sListeParam[i][1]);
        }
        SqlParameter Retour = Command.Parameters.Add("ReturnValue",
     SqlDbType.Int);
        Retour.Direction = ParameterDirection.ReturnValue;
     
        OpenConnection();
        return Command.ExecuteReader();
    }
    Pour acceder aux résultats j'utilise la manière suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    List<string[]> sListeParam = new List<string[]>();
    sListeParam.Add(new string[] { "@matricule_ent", sTxt });
    sListeParam.Add(new string[] { "@region", "11" });
     
    SqlDataReader drReader = cRequete.StoredProcedure(sProcedureName,
     sListeParam);
     
    drReader.Read();
    MessageBox.Show(drReader.GetValue(drReader.GetOrdinal
    ("idBranche")).ToString());
     
    drReader.NextResult();
    drReader.Read();
    MessageBox.Show(drReader.GetValue(drReader.GetOrdinal
    ("nomEntreprise")).ToString());
     
    drReader.NextResult();
    drReader.Read();
    MessageBox.Show(drReader.GetValue(drReader.GetOrdinal("Return
     Value")).ToString());
    Or après le 3° NexResult() il ne me trouve plus rien dans mon DataReader.
    Avez-vous une petite idée sur la question ?

    Merci

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2005
    Messages : 114
    Par défaut hi
    salut
    d'abord pourquoi tu te casses la tête à répéter la ligne, fais une boucle, ensuite peut-être en fait la procédure stockée ne retourne que 2 solutions

  3. #3
    Membre Expert Avatar de Jinroh77
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2006
    Messages
    1 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Février 2006
    Messages : 1 964
    Par défaut
    J'ai oublié de préciser, la lecture du Reader que je fais là est juste un test.
    J'ai bien vérifié et testé ma procédure.
    Elle execute à la fin 2 select sur lesquels j'arrive à faire travailler correctement mon Reader : première Read() puis NextResult() et Read(), mais après je n'ai pas accès à mon paramètre de retour.
    Je pensais faire un nouveau NextResult() mais ça ne fonctionne pas.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2005
    Messages : 114
    Par défaut
    re
    en fait je sais que le pointeur au niveau de l'enregistrement pointe toujours sur le suivant.
    donc quand tu fais le nexresult il passe en fait au 3eme enregistrement qui n'existe pas puisque il y a que 2 selections comme ce que tu dis (corrige moi si je me trompe par rapport ca ) ,donc c'est normal que le retour d'apres soit vide

  5. #5
    Membre Expert Avatar de Jinroh77
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2006
    Messages
    1 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Février 2006
    Messages : 1 964
    Par défaut
    C'est exact.
    Mais vu l'affichage sous le manager de sql server : Les 3 retours (2 select + 1 valeur de retour) je pensais quje j'aurais pu y avoir accès par un NexResult(). Or comme on l'a vu ça ne fonctionne pas.

    Comment fais-t-on pour y accèder à cette valeur de retour ?

    Merci

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2005
    Messages : 114
    Par défaut bonjour
    bonjour
    dit moi tu es de quel pays si C pas discret car pour moi ton dernier message est à 7h 45 ou bien décalage de temps ou bien t'es un bosseur .
    bon un peu de serieux d'apres une petite recherche il faut crée une valeur de retour dans les parametres de la proc stock .
    un petit detour dans le cours ma donnée ce lien
    http://dotnet.developpez.com/tutoriels/ado1/csharp/#L6

Discussions similaires

  1. comment récupérer la valeur de retour d'une fonction
    Par sebac dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 26/02/2010, 10h28
  2. Réponses: 5
    Dernier message: 14/06/2008, 14h30
  3. Comment completer une variable dans une PROC
    Par Le Basque dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 20/09/2004, 18h18
  4. Réponses: 2
    Dernier message: 06/07/2004, 18h46
  5. Comment mettre le curseur d'un Memo sur le Canvas d'une Form ?
    Par julie20 dans le forum Composants VCL
    Réponses: 3
    Dernier message: 27/08/2003, 14h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo