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

MS SQL Server Discussion :

ajout et suppression dans une procédure


Sujet :

MS SQL Server

  1. #1
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    301
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2006
    Messages : 301
    Points : 75
    Points
    75
    Par défaut ajout et suppression dans une procédure
    Bonjour,

    j'utilise une procédure stockée (pour que ce soit plus rapide) dans laquelle je crée une table :

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     
    CREATE       PROCEDURE CLIPTRACK_WEB
     
    	@date datetime = NULL,
    	@choix int=0
    AS
    BEGIN
     
    SET NOCOUNT ON
     
    DECLARE @table  TABLE(
    	ID_SOURCE int,
    	NUMERO_PARUTION int,
    	DATE_PARUTION datetime,
    	DATE_TRAITEMENT_LECTEUR datetime,
    	INTITULE varchar (100)	
    )
     
    INSERT @table
    (
    	ID_SOURCE,
    	NUMERO_PARUTION,
    	DATE_PARUTION,
    	DATE_TRAITEMENT_LECTEUR,
    	INTITULE	
    )
     
    select ....
     
    IF (@date IS NOT NULL) 
    BEGIN
    	DELETE FROM @table WHERE CONVERT(char(10), date_traitement_lecteur, 103) <> @date
    END
    ELSE 
    BEGIN 
    	DELETE FROM @table WHERE  CONVERT(char(10), date_traitement_lecteur, 103) <> CONVERT(char(10), getdate(), 103) 
    END
     
    SELECT * from @table order by intitule
    END
    GO
    voilà
    et je voudrai quand choix =1, ajouter une ligne à ma table et quand choix = 2 en supprimer une (suivant un paramètre)
    mais je voudrais que quand je relance ma procédure, la modification soit prise en compte pour tout le temps

    merci de votre aide

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    434
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 434
    Points : 502
    Points
    502
    Par défaut
    Citation Envoyé par sissi25
    voilà
    et je voudrai quand choix =1, ajouter une ligne à ma table et quand choix = 2 en supprimer une (suivant un paramètre)
    mais je voudrais que quand je relance ma procédure, la modification soit prise en compte pour tout le temps

    merci de votre aide
    Ben voilà une question que je ne comprends pas. Ta table est déclarée en variable locale, donc dès que ta proc est exécutée, ta table est supprimée.
    Tu n'as donc pas d'autre choix que de faire une table fixe.

    A moins que j'ai pas compris la question

  3. #3
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    301
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2006
    Messages : 301
    Points : 75
    Points
    75
    Par défaut
    c'est-à-dire qu'avec ma procédure stockée que je t'ai montrée
    je ne peux pas ajouter une ligne et que cette ligne soit conservé à la porchaine exécution de la procédure ?

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    434
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 434
    Points : 502
    Points
    502
    Par défaut
    ben non, puisque ta table est temporaire donc automatiquement supprimée à la fin de l'exécution de ta procédure.

    Tu peux ajouter une ligne dans ta proc, elle ressortira à la fin avec ton "select * from @table" mais après nada.

    Tu as plutôt interet à inserer ta ligne dans la table source, celle qui permet de repmlir ta table locale (c'est la partie de code que tu n'as pas donnée)

  5. #5
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    301
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2006
    Messages : 301
    Points : 75
    Points
    75
    Par défaut
    oui mais elle y est déja la ligne dans la table source c'est juste que je ne la sélectionne pas dans la table temporaire

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    434
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 434
    Points : 502
    Points
    502
    Par défaut
    Citation Envoyé par sissi25
    oui mais elle y est déja la ligne dans la table source c'est juste que je ne la sélectionne pas dans la table temporaire

    peux pas t'aider car il doit y avoir une logique dans le fait que tu exclues une ligne pour la remettre après (et la conserver), mais je comprends pas ta logique.

    Mais la réponse à ta question est claire : tu peux pas faire ce que tu veux, sauf à créer une "vraie" table et pas une temporaire.

  7. #7
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    301
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2006
    Messages : 301
    Points : 75
    Points
    75
    Par défaut
    suite à vos conseils, j'ai crée une " vrai" table. Pour insérer des données dans cette table,

    j'ai fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    insert into vrai_table (champ1, champ2...)
    select champ1, champ2...
    et ensuite j'ai utilisée ma procédure stockée

    ca marche sans problème, le problème c'est que comme je fais le insert into vrai_table une fois, la mise à jour ne se fait pas. dans le select j'ai des tables qui se modifient et je voudrais que ma table vrai_table se modifie en conséquence

    on m'a dit d'utiliser un trigger

    pourriez-vous m'expliquer comment ca marche ?

    merci d'avance

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27
    Points : 27
    Points
    27
    Par défaut
    Il suffit dans ta proc de faire un test genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if exist(select...
     
    delete from...where
    Si l'enregistrement existe il est supprimé, s'il n'existe pas il est créé.

    Par contre je ne voit pas bien la logique inherente.

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

Discussions similaires

  1. Réponses: 13
    Dernier message: 07/04/2013, 17h42
  2. Réponses: 13
    Dernier message: 27/04/2011, 10h13
  3. passage d'un nom de table dans une procédure stockée
    Par thierry V dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 26/07/2010, 16h48
  4. Recherche;ajout et suppression dans une BD via VB
    Par uvany1 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 23/04/2007, 16h39
  5. Suppression dans une Procédure Stockée
    Par softflower dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 12/12/2005, 15h15

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