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 :

[TSQL] affectation @variable


Sujet :

MS SQL Server

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 11
    Points : 11
    Points
    11
    Par défaut [TSQL] affectation @variable
    Bonjour,

    je cherche à affecter une variable depuis une procédure stockée provenant d'une autre base de données du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    use madatabase1
    declare @databasename as varchar(100)
    declare @variable as int
     
    set @databasename = 'maDatabase2'
     
    select @variable=monchamp from @databasename.dbo... where idparam=1
    print @variable
    ...
    Je ne sais pas comment faire et que dois-je mettre à la place des ...

    j'essaye de passer par un exec(requete) ca ne marche pas
    j'essayer de passer par une variable @adatabase + '.dbo.matable' ca ne marche

    Pouvez vous m'aider .

    Cdt

    Luc

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 899
    Points : 53 140
    Points
    53 140
    Billets dans le blog
    6
    Par défaut
    Expliquez nous ce que vous voulez faire avec un exemple concret, parce que là c'est incompréhensible !!!!

    A +

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 11
    Points : 11
    Points
    11
    Par défaut
    Désolé, je m'en doutais un peu.

    Mon problème est le suivant :

    A partir d'un trigger sur le on insert d'une table d'une database1, je dois aller mettre à jour les données d'une table situé dans une database2.

    Je récupère le nom de la database2 à mettre à jour sous forme d'une variable par l'intermédiaire d'une table située dans la database1

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    select 
      @databaseName = databaseName,
    from 
      Etablissements
    where 
      idEtablissement = (select idEtablissement from inserted)
    Une fois récupéré le nom de la database, je sais comment mettre à jour les données de ma database2 de la manière suivante

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    select @variable1=champ1,@variable2=champ2,@variable3=champ3 from inserted
    ...
    set @requeteUpdate = 'update ' + @databaseName + '.dbo.matable set champ1=' + @variable1 + ',champ2=' + @variable2 + ' where champs3=' + @variable3
    exec (@requeteUpdate)
    Cela marche Nickel

    Sauf qu'en réalité je dois récupérer une valeur située dans une table de la database2 et faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    set @requeteUpdate = 'update ' + @databaseName + '.dbo.matable 
    set champ1=' + (@variable1*@variable4) + ',champ2=' + (@variable2*@variable4) + ' 
    where champs3=' + @variable3
    exec (@requeteUpdate)
    Donc ma question, comment faire à partir de ma procédure stockée éxécutée depuis ma database1 l'équivalent de :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    select @variable4=monchamp from ? where param=1
    La clause where est la pour l'exemple. je cherche le ?

    J'espère avoir été plus claire, car mon problème (interface que je dois faire dans le cadre d'un stage en entreprise) n'est pas facile à expliquer.

    Sinon j'ai toujours la possibilité de créer un trigger sur le On Update de la table dans la database 2, mais pour raison de maintenance (il y aura jusqu'à 300 databases de destination) je ne préfère pas.

  4. #4
    Nouveau Candidat au Club
    Inscrit en
    Janvier 2013
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Janvier 2013
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Bonjour,

    Il y a sans doute plus élégant, mais peut-être pourriez-vous substituer, dans votre requête contenue dans @requeteUpdate, une sous-requête retournant la valeur désirée ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SET @requeteUpdate = 'update ' + @databaseName + '.dbo.matable 
    set champ1=' + (@variable1 + '*(SELECT valeur cherchée FROM ' + @databaseName + '.unetable where etc) ') + ',champ2=' + (@variable2*@variable4) + ' 
    where champs3=' + @variable3
    exec (@requeteUpdate)

  5. #5
    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
    passez par sp_executeSql avec des variables OUTPUT pour récupérer la valeur à partir de votre requète dynamique

Discussions similaires

  1. [htm/JavaScript] Pbm affectation variable d'environnement
    Par fab22montpellier dans le forum Balisage (X)HTML et validation W3C
    Réponses: 8
    Dernier message: 27/06/2005, 16h09
  2. Réponses: 5
    Dernier message: 12/05/2005, 10h49
  3. Réponses: 10
    Dernier message: 03/05/2005, 21h57
  4. [JSP] [débutant] affectation variable java
    Par RENAULT dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 26/07/2004, 15h44
  5. Affecter variable champs
    Par pete007 dans le forum ASP
    Réponses: 3
    Dernier message: 20/04/2004, 16h33

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