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

C# Discussion :

Retour de valeur d'une procedure stockée [Débutant]


Sujet :

C#

  1. #1
    Membre Expert Avatar de mayekeul
    Inscrit en
    Août 2005
    Messages
    1 369
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 1 369
    Par défaut Retour de valeur d'une procedure stockée
    Bonjour,

    J'essaie de lancer une procedure stockée et d'en récupérer la valeur de retour.

    j'ai dans sql server la procedure suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    BEGIN
    	UPDATE tb_Clicks
    	SET tb_Clicks.Clicked=-1, tb_Clicks.DateClicked=CURRENT_TIMESTAMP
    	WHERE tb_Clicks.OfferId=@SmallClickReference AND tb_Clicks.ClickPeriod=@ClickPeriod AND tb_Clicks.Clicked=0
     
    	return @@ROWCOUNT
     
    END
    et dans mon code c#

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    CST_SQLDataSetTableAdapters.sp_SmallClickOn sp = new CST.Aggregations.Clicks.CST_SQLDataSetTableAdapters.sp_SmallClickOn();
    int ret = (int)sp.SmallClickOn("REF-E-12345", "CAL-2011");
    à l'execution, il me renvoie une erreur sur la deuxième ligne me disant
    Citation Envoyé par Microsoft Visual Studio
    Object reference not set to an instance of an object.
    Alors que fait-je de mal?
    Comprends pas...

    merci de votre aide

  2. #2
    Membre éprouvé
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Octobre 2010
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Transports

    Informations forums :
    Inscription : Octobre 2010
    Messages : 62
    Par défaut
    Bonjour,

    La procédure stockée fonctionne sur sql server ?
    b_Clicks.ClickPeriod=@ClickPeriod
    Si ce n'est pas une faute de frappe lors de la copie, sql server ne trouvera pas b_Clicks.

  3. #3
    Membre Expert Avatar de mayekeul
    Inscrit en
    Août 2005
    Messages
    1 369
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 1 369
    Par défaut
    bonjour

    non la procédure fonctionne parfaitement dans SQL Server sans problème

    mais je corrige la faute de frappe

  4. #4
    Membre éprouvé
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Octobre 2010
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Transports

    Informations forums :
    Inscription : Octobre 2010
    Messages : 62
    Par défaut
    Est-il possible d'avoir la fonction SmallClickOn ?

    Il est possible, entre autre, que SqlCommand ou équivalent ne soit pas initialisé lorsqu'il cherche à se connecter.

  5. #5
    Membre Expert Avatar de mayekeul
    Inscrit en
    Août 2005
    Messages
    1 369
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 1 369
    Par défaut
    oui, c'est la fonction décrite au début du post
    Code SmallClickOn : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    BEGIN
    	UPDATE tb_Clicks
    	SET tb_Clicks.Clicked=-1, tb_Clicks.DateClicked=CURRENT_TIMESTAMP
    	WHERE tb_Clicks.OfferId=@SmallClickReference AND tb_Clicks.ClickPeriod=@ClickPeriod AND tb_Clicks.Clicked=0
     
    	return @@ROWCOUNT
     
    END

    sinon je peux ecrire sans générer d'erreur
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    sp.SmallClickOn("REF-E-12345", "CAL-2011");
    C'est seulement pour récupérer la valeur de retour que cela pose problème, la procédure est quant à elle parfaitement éxécutée.

  6. #6
    Membre émérite Avatar de kheironn
    Homme Profil pro
    Chef de projets technique C# / MVC / .Net
    Inscrit en
    Février 2007
    Messages
    823
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projets technique C# / MVC / .Net
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2007
    Messages : 823
    Par défaut
    C'est quoi cette NullRef ? tu as regardé en pas à pas si tous tes objets valent !null ?
    Il y en a un qlq part qui n'est pas instancié (comme le dit le message d'erreur).

  7. #7
    Membre Expert Avatar de mayekeul
    Inscrit en
    Août 2005
    Messages
    1 369
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 1 369
    Par défaut
    Alors, tout les objet sont instancié

    c'est cette ligne qui pose probleme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int ret = (int)sp.SmallClickOn("REF-E-12345", "CAL-2011");
    ce que j'aimerais juste , c'est qu'il me renvoie la valeur de retour
    la procedure en tant que telle fonctionne au poil et fait bien l'update dans la table sql

  8. #8
    Membre éprouvé
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Octobre 2010
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Transports

    Informations forums :
    Inscription : Octobre 2010
    Messages : 62
    Par défaut
    Sur SqlServer le code de la procédure est bien :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    BEGIN
    	UPDATE tb_Clicks
    	SET tb_Clicks.Clicked=-1, tb_Clicks.DateClicked=CURRENT_TIMESTAMP
    	WHERE tb_Clicks.OfferId=@SmallClickReference AND tb_Clicks.ClickPeriod=@ClickPeriod AND tb_Clicks.Clicked=0
     
    	return @@ROWCOUNT
     
    END

    Ensuite sur l'environnement de dev, vous avez un DataSetTableAdapters (créé en automatique peut être en ajoutant la source de donnée au projet.)
    Vous déclarez sp comme etant un TableAdapter de la procédure stockée et vous lui demandez de lancer SmallClickOn.
    Ce qui manque c'est le code C# de cette fonction qui doit contenir un objet non instancié (fonction peut etre créé aussi en automatique par le designer.

    L'appel de SmallClickOn devrait déclencher :
    - Connexion à la bdd
    - création des paramètres
    - Execution de la commande
    - retour du paramètre count
    - Deconnexion de la bdd

  9. #9
    Membre Expert Avatar de mayekeul
    Inscrit en
    Août 2005
    Messages
    1 369
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 1 369
    Par défaut
    Bonjour,

    Alors, betement!

    Lorsque dans le concepteur, j'introduit la procédure stockée., je lui dis qu'elle renvoie une valeur de retour.

    dans le concepteur apparemment, cette valeur de retour, cela devrait être la valeur du parametre OUT de la procedure et non pas la valeur du résultat comme énoncé dans ma procédure par exemple

    Donc, dans le concepteur, je lui indique que ne renvoie aucune valeur.

    et là ,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int ret = sp.SmallClickOn("REF-E-12345", "CAL-2011");
    fonctionnne sans problème...

    voilà, euh, j'espère que je me suis bien fait compris

    et encore merci pour votre aide.

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

Discussions similaires

  1. Réponses: 17
    Dernier message: 28/08/2012, 01h32
  2. Réponses: 9
    Dernier message: 26/01/2012, 13h50
  3. Valeur de retour d'une procedure stockée
    Par sessime dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 21/11/2007, 07h52
  4. Réponses: 1
    Dernier message: 25/11/2006, 15h21
  5. variable de retour d'une procedure stocke
    Par yahia dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 14/09/2004, 14h12

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