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 :

[SP] Stocker une valeur obtenu depuis un Select


Sujet :

Développement SQL Server

  1. #1
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Février 2003
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 2 177
    Points : 4 489
    Points
    4 489
    Par défaut [SP] Stocker une valeur obtenu depuis un Select
    Bonjour,

    Je dois dans une SP
    Afficher le resultat d'un select (pour reproposer d'ancienne valeur) et ensuite effacer les records sur base du résultat obtenu par le select

    Pour être plus clair avec un exemple simple
    TableA (Id_TableA;Champ1;Champ2;Id_Table2)

    ma SP doit ressemble à :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Declare @Id_Table int
     
    Select TOP 1 TableA;Champ1,Champ2;Id_Table2 
    From TableA
    Where Id_TableA= @Id_TableA
    Order by Id_Table2 DESC
     
    Delete TableA WHERE Id_Table2 = @Id_Table2
    J'ai pensé à une solution faire le select et ensuite le delete avec comme clause where le select mais c'est executé 2 fois la même procédure, il y a peut-être plus performant
    Je ne suis qu'un pauvre débutant alors ne frappez pas si mes idées ne sont pas bonnes

  2. #2
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Bonjour,

    Cela aurait pu être possible avec la clause OUTPUT de l'instruction DELETE (ou INSERT / UPDATE) si le prédicat de la clause WHERE était le même dans le SELECT et dans le DELETE, ce qui n'est bien évidemment pas le cas

    @++

  3. #3
    Membre éprouvé

    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 448
    Points : 1 234
    Points
    1 234
    Par défaut
    Si vous êtes en 2008 (et +), vous pouvez utiliser MERGE + OUTPUT (une corolaire à cet article).

    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
     
    DECLARE @tableID2 TABLE (
     ID INT
    )
     
    MERGE INTO @tableID2
    USING (
     /* Votre select, avec un nom pour chaque colonne */
    ) AS Src
    ON ( 1 = 2 )
    WHEN NOT MATCHED THEN
    	INSERT ( ID )
    	VALUES ( Src.tableID2 )
    OUTPUT
    	Src.*
    ;
     
    DELETE TableA
    FROM @tableID2 AS T2
    WHERE TableA.Id_Table2 = T2.ID
    Notez bien que j'ai utilisé des noms (tables, colonnes) fictifs, il ne tient qu'à vous de faire les remplacements nécessaires.

    EDIT: j'ai écrit un article sur le sujet.
    Most Valued Pas mvp

Discussions similaires

  1. Réponses: 5
    Dernier message: 11/10/2007, 12h29
  2. [TABLE]Récupérer et stocker une valeur
    Par stéphane_ais2 dans le forum Access
    Réponses: 11
    Dernier message: 10/03/2006, 14h52
  3. [PEAR][HTML_QuickForm] Attribution d'une valeur par défaut à un select
    Par mohican13 dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 24/02/2006, 08h08
  4. Sélection d' une valeur max depuis 2 tables
    Par ipeteivince dans le forum Requêtes
    Réponses: 4
    Dernier message: 13/05/2005, 17h37
  5. Joindre une valeur arbitraire dans un SELECT
    Par Tuxxy dans le forum Requêtes
    Réponses: 3
    Dernier message: 20/01/2004, 17h04

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