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

Développement SQL Server Discussion :

2 procédures stockées dans un cursor


Sujet :

Développement SQL Server

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 7
    Points : 4
    Points
    4
    Par défaut [Résolu] 2 procédures stockées dans un cursor
    Bonjour,

    Je rencontre un problème dans un cursor qui est imbriqué dans d'autre le tout dans un déclencheur.

    Dans le curseur, j'exécute 2 procédures stockées. Un update puis un delete. Or seulement le delete est effectué.
    Lorsque je met l'une ou l'autre elle s'exécute sans problème.

    Je vous remercie d'avance pour votre aide.

    SQL Serveur 2008 sous Windows Serveur 2008 R2.

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 056
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 056
    Points : 1 216
    Points
    1 216
    Par défaut
    bonjour,

    Merci de poster le code pour que l'on puisse comprendre. Et les éventuels messages d'erreur, s'il y a ?

    Merci
    Emmanuel T.

  3. #3
    Membre émérite

    Homme Profil pro
    Chargé de Développement et d'Analyse de données
    Inscrit en
    Mars 2010
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé de Développement et d'Analyse de données
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 278
    Points : 2 856
    Points
    2 856
    Par défaut
    un petit conseil : évite d'utiliser les curseurs, pour des raisons de performances.

    Tu peux voir ici comment on peut contourner l'utilisation d'un curseur.

    j'ai écrit un exemple avec utilisation de curseur en bas de la page suite à une remarque d'un membre du forum


    A+
    Etienne ZINZINDOHOUE
    Billets-Articles

  4. #4
    Membre actif
    Inscrit en
    Juin 2006
    Messages
    229
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 229
    Points : 265
    Points
    265
    Par défaut
    Bonjour,

    J'ajouterais que plus que pour des raisons de performances, on oublie les curseurs car ce n'est pas comme ça qu'on programme en SQL.

    Zabriskir

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 7
    Points : 4
    Points
    4

  6. #6
    Membre émérite

    Homme Profil pro
    Chargé de Développement et d'Analyse de données
    Inscrit en
    Mars 2010
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé de Développement et d'Analyse de données
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 278
    Points : 2 856
    Points
    2 856
    Par défaut
    est ce que l'exécution de la procédure stockée delete seule marche ?

    Exécute la commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    EXEC dbo.Update_PositionItem_AfterDelete @idSite,@idProduit,N'Produit', False
    avec une valeur en dure pour @idSite et @idProduit

    Et donne nous le résultat

    A+
    Etienne ZINZINDOHOUE
    Billets-Articles

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    Lorsque je commente l'une ou l'autre, elle est correctement exécutée.

  8. #8
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 056
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 056
    Points : 1 216
    Points
    1 216
    Par défaut
    Est-ce qu'il est possible d'avoir le code complet du trigger ?
    Est-ce que les 2 procédures touchent à la table Produit ?

    Merci d'avance
    Emmanuel T.

  9. #9
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    Le trigger est dans une base.
    Les 2 procédures stockées sont dans une autre et touchent aux données de cette autre.

    J'ai édité mon code en ajoutant les bases.

  10. #10
    Membre émérite

    Homme Profil pro
    Chargé de Développement et d'Analyse de données
    Inscrit en
    Mars 2010
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé de Développement et d'Analyse de données
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 278
    Points : 2 856
    Points
    2 856
    Par défaut
    Citation Envoyé par bill74 Voir le message
    Le trigger est dans une base.
    Les 2 procédures stockées sont dans une autre et touchent aux données de cette autre.
    D'abord est ce que les 2 bases sont sur la même instance ?
    Si oui alors il faut ajouter le nom de la base :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    EXEC NomdelaBaseOuSetrouvelaProstockée.NomduSchema.Update_PositionItem_AfterDelete @idSite,@idProduit,N'Produit',
    Etienne ZINZINDOHOUE
    Billets-Articles

  11. #11
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 056
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 056
    Points : 1 216
    Points
    1 216
    Par défaut
    Oui mais comme le curseur balaye la table Produit de la base B et que les 2 procs (du moins le Delete_Produit) semblerait attaquer la table Produit, je me demande s'il ne pourrait pas y avoir un soucis .... Pouvez-vous poster tout le code (trigger) + celui des procs ?

    PS : expliquez précisément le problème et mettez tous les détails pour que l'on puisse y voir clair et rapidement traiter votre soucis. On vient de passer 10 posts à demander des détails.

    merci
    Emmanuel T.

  12. #12
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    Update_PositionItem_AfterDelete : Delete_Produit :
    Le problème est qu'il exécute uniquement la deuxième procédure du curseur (Delete_Produit).

  13. #13
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 056
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 056
    Points : 1 216
    Points
    1 216
    Par défaut
    Première remarque sur le @@FETCH_STATUS. Dans un cas de curseurs imbriqué
    il faut stocker cette variable dans une variable intermédiaire sinon le @@FETCH_STATUS est le même pour les 2 curseurs.
    Je regarde le reste...
    Emmanuel T.

  14. #14
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    Le problème venait des select des curseurs.

    Merci pour votre aide !

    Topic résolu.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 17/01/2006, 17h12
  2. Suppression de paramètre pour procédure stockée dans le code
    Par 24 faubourg dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 04/01/2006, 10h51
  3. procédures stockées dans procédure stockée
    Par olivc dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 30/05/2005, 16h58
  4. [PL/SQL] Appel procédure stockée dans trigger
    Par Félia dans le forum Oracle
    Réponses: 3
    Dernier message: 24/01/2005, 17h25
  5. Procédures stockées dans accèss?
    Par joe.lindien dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 21/11/2003, 15h31

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