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 :

Appeler une procédure stockée sur un jeu de résultats


Sujet :

Développement SQL Server

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 38
    Points : 14
    Points
    14
    Par défaut Appeler une procédure stockée sur un jeu de résultats
    Bonjour,

    J'ai une procédure stockée qui gère l'insertion de données dans une table.

    Afin de faire un import en masse, j'ai une table temporaire contenant un jeu de données à insérer.

    Est il possible de le faire de façon ensembliste, c'est à dire sans boucle.

    La façon à laquelle je pense de suite serait de:
    - faire un select dans ma table source
    - boucler sur les résultats
    - pour chaque résultat appeler ma procédure stockée

    Je pense que ce n'est pas très performant. Qu'en pensez vous ?

    J'aurais aimé, comme pour une fonction, pouvoir appeler en une fois. Je pense à l'utilisation d'un select count() par exemple. C'est cette logique que j'aurais aimé utiliser

    Merci

  2. #2
    Membre éprouvé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2009
    Messages
    623
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Août 2009
    Messages : 623
    Points : 1 049
    Points
    1 049
    Par défaut
    Tu peux passer en paramètre à ta procédure stockée une TVP.
    Par contre, il va falloir réécrire ta procédure stockée pour qu'elle soit ensembliste.
    Blog Perso | Kankuru (logiciel gratuit pour SQL Server)

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 38
    Points : 14
    Points
    14
    Par défaut
    Oui, j'avais vu cette possibilité mais la procédure existant et etant appelée par le reste de l'application, ça implique pas mal de changements.

    Est ce la seule solution ?

    Merci de ta réponse

  4. #4
    Membre éprouvé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2009
    Messages
    623
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Août 2009
    Messages : 623
    Points : 1 049
    Points
    1 049
    Par défaut
    Pour moi, si tu ne peux pas modifier la procédure stockée qui traite unitairement les lignes, je ne vois pas de solution miracle.
    Blog Perso | Kankuru (logiciel gratuit pour SQL Server)

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 38
    Points : 14
    Points
    14
    Par défaut
    Ok, merci de ta réponse,

    Je vais donc utiliser la méthode expliquée ici par MS:
    http://support.microsoft.com/kb/111401/fr

    J'en profite pour une autre question. La procédure stockée que j'utilise est dérivée de celle proposée par Frédéric ici:
    http://sqlpro.developpez.com/cours/arborescence/

    Lors de l'insertion, l'id de l'élément inséré est retourné via
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT @@IDENTITY
    RETURN
    Dans le cadre de procédure stockée imbriquée appelant la procédure d'insertion, comment récupérer l'id inséré ?

    Par exemple, si je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    EXECUTE @fam_id = [dbo].[SP_INS_FAMILLE] @param1, @param2
    Ma variable fam_id ne contient pas l'id inséré mais le code de retour de la procédure, à savoir 0 si l'insert est OK

    Merci encore

  6. #6
    Membre éprouvé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2009
    Messages
    623
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Août 2009
    Messages : 623
    Points : 1 049
    Points
    1 049
    Par défaut
    Tu peux utiliser un paramètre output à ta procédure stockée.
    Blog Perso | Kankuru (logiciel gratuit pour SQL Server)

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 38
    Points : 14
    Points
    14
    Par défaut
    Veux tu dire que la procédure de Frédéric n'est pas utilisable en l'état pour des procédures imbriquées ?

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 38
    Points : 14
    Points
    14
    Par défaut
    Cet article préconise de passer par un openquery:
    http://www.sqlusa.com/bestpractices2...lectfromsproc/

  9. #9
    Membre éprouvé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2009
    Messages
    623
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Août 2009
    Messages : 623
    Points : 1 049
    Points
    1 049
    Par défaut
    L'openquery va te permettre de requêter un serveur lié, je ne vois pas bien à quoi ceci va t'aider ou alors 2 possibilités :
    - je n'ai pas compris ton besoin (c'est fort possible !)
    - tu ne nous as pas tout dit
    Blog Perso | Kankuru (logiciel gratuit pour SQL Server)

  10. #10
    Membre expert Avatar de iberserk
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Novembre 2004
    Messages
    1 795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 795
    Points : 3 173
    Points
    3 173
    Par défaut
    Oui je ne vois pas bien le rapport avec l'openQuery...

    Refaites la même procédure de manière ensembliste.

    Si vous ne voulez par redonder la logique, modifier la proc stock actuellement pour qu'elle même appel la nouvelle (avec un seul enregistrement dans ce cas la...).

    Si vous n'y arrivez pas et le demandez gentiment on peut même vous y aider :-)
    Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir.
    MCTS Database Development
    MCTS Database Administration

Discussions similaires

  1. Exécution d'une procédure stockée sur un jeux de résultat
    Par verbal34 dans le forum Développement
    Réponses: 2
    Dernier message: 28/10/2009, 16h37
  2. Réponses: 1
    Dernier message: 07/02/2006, 00h11
  3. Réponses: 3
    Dernier message: 17/01/2006, 17h12
  4. Update appelant une procédure stockées
    Par meufeu dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 06/10/2005, 18h31
  5. [appeler une procédure stockée]
    Par viny dans le forum PostgreSQL
    Réponses: 6
    Dernier message: 10/03/2005, 22h38

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