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 :

declaration de variable pour remplacer in..


Sujet :

Développement SQL Server

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    356
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 356
    Points : 133
    Points
    133
    Par défaut declaration de variable pour remplacer in..
    bonjour,

    afin de simplifier l'utilisation d'une requete avec beaucoup de ligne, j'ai mis des variables pour pouvoir les regrouper en debut de code.

    au lieu de faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    update #table_client set categorie=1 where .....
    j'ai mis

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    declare @ID_nouvelle categorie int
    SET @ID_nouvelle categorie = 1;
     
    update #table_client set categorie=@ID_nouvelle categorie where .....
    j'ai maintenant un probleme avec les requetes du type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    update #table_client set categorie in (1,2) where .....
    comment je peux faire pour remplacer le "in (1,2)" en "in @ma_liste_d_ID" ?

    PS:
    en fait j'ai utilisé EXEC en faisant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    DECLARE @requete nvarchar(4000)
    DECLARE @mon_IN nvarchar(10)
    SET @mon_IN = '(1)'
    requete ='update #table_client set categorie in '+@mon,_in+'where .....'
    exec(requete)
    j'ai pas trouvé de variable pour on peut enumeré plusieurs nombre...
    pas grave je vais faire comme ca

    merci
    greg

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 140
    Points : 89
    Points
    89
    Par défaut
    Citation Envoyé par exyacc Voir le message
    DECLARE @mon_IN nvarchar(10)
    SET @mon_IN = '(1)'
    requete ='update #table_client set categorie in '+@mon_in+'where .....'

    pas grave je vais faire comme ca
    Sauf que pour chaque valeur de @mon_in il va recompiler et regener un plan d'execution qu'il va stocker dans le cache.
    Pas génial.
    Solution :
    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 @Filtres TABLE(ID Int);
    Declare @CurID varchar(1000), @Sep char(1), @Pos int
    Set @Sep = ','
    Set @Pos = -1
     
    While(@Pos <> 0)
       BEGIN
          Set @Pos = Charindex(@Sep,@mon_IN)
          if @Pos > 0      
             SET @CurID = rtrim(ltrim(substring(@mon_IN,0,@Pos) ))
          else
             SET @CurID = rtrim(ltrim(@mon_IN))
     
          if @CurID <> ''
             INSERT @Filtres (ID) Values (cast(@CurID as int))
     
          SET @mon_IN = substring(@mon_IN,@Pos+1, len(@mon_IN))
       END
     
    update #table_client set ... FROM #table_client inner join @Filtres  as F on categorie = F.ID
    Attention, le parametre @mon_IN ne doit contenir que des int séparés par des virgules, sans les parenthèses ni aucun caractère parasite

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 04/02/2010, 11h45
  2. Requète pour remplacer une chaîne (avec variable)
    Par s-c-a-r-a dans le forum Langage SQL
    Réponses: 8
    Dernier message: 10/06/2009, 16h14
  3. Probléme pour remplacer = dans une variable
    Par koKoTis dans le forum Scripts/Batch
    Réponses: 18
    Dernier message: 05/06/2007, 13h37
  4. declarer une variable une fois pour toute
    Par rober dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 07/11/2006, 18h35
  5. Déclarer une variable pour remplacer cout
    Par alvun dans le forum SL & STL
    Réponses: 11
    Dernier message: 29/06/2006, 10h29

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