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 :

valeur de retour: serveur lié


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Inscrit en
    Novembre 2008
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 139
    Par défaut valeur de retour: serveur lié
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     SELECT *
    FROM OPENQUERY(LINK_SERVER, 'SELECT c1 FROM TABLE WHERE c2=x AND...........) 
    GO
    Sachant que que cette requette executée au serveur a distant retourne une seule valeur de c1, Est-il possible de recuperer la valeur c1 dans une variable pour qu'on puisse l'utiliser dans mon traitement.

  2. #2
    Membre actif
    Homme Profil pro
    R&D
    Inscrit en
    Avril 2004
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : R&D

    Informations forums :
    Inscription : Avril 2004
    Messages : 127
    Par défaut
    Oui,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT @c1 =  c1
    FROM OPENQUERY(LINK_SERVER, 'SELECT c1 FROM TABLE WHERE c2=x AND...')

  3. #3
    Membre très actif
    Inscrit en
    Novembre 2008
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 139
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT @L_MEMO= L_MEMO
    FROM OPENQUERY(DB264_LINK_SERVER, 'SELECT L_MEMO FROM Z_MEMO WHERE C_MEMO=2 AND  N_TABORIGINE ='APPEL'' ) AS T
    lors de l’exécution, un message d'erreur suivant:
    Syntaxe incorrecte vers 'APPEL'

  4. #4
    Membre expérimenté
    Inscrit en
    Janvier 2012
    Messages
    145
    Détails du profil
    Informations forums :
    Inscription : Janvier 2012
    Messages : 145
    Par défaut
    Si tu veux utiliser une quote dans une chaîne de caractères, il faut la doubler, donc mettre 'leDebutDeTaChaine''TaChaineEntreQuotes''laFinDeTaChaine'.

  5. #5
    Membre très actif
    Inscrit en
    Novembre 2008
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 139
    Par défaut
    Bonjour,

    Au lieu d'une valeur figée'APPEL', je veux passer une variable
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    DECLARE 
    @L_MEMO VARCHAR(80),
    @nameTable VARCHAR(80)
    SET @nameTable='APPEL'
     
    SELECT @L_MEMO= L_MEMO
    FROM OPENQUERY(DB264_LINK_SERVER, 'SELECT L_MEMO FROM Z_MEMO WHERE C_MEMO=2 AND N_TABORIGINE =@nameTable' ) AS T
    un message d'erreur est génerée
    La variable scalaire "@nameTable" doit être déclarée.
    suite au syntaxe incorrecte

  6. #6
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    DECLARE 
    @L_MEMO VARCHAR(80),
    @nameTable VARCHAR(80)
    SET @nameTable='APPEL'
     
    SELECT @L_MEMO= L_MEMO
    FROM OPENQUERY(DB264_LINK_SERVER, 'SELECT L_MEMO FROM Z_MEMO WHERE C_MEMO=2 AND N_TABORIGINE ='''+@nameTable+ '''' ) AS T

  7. #7
    Membre actif
    Homme Profil pro
    R&D
    Inscrit en
    Avril 2004
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : R&D

    Informations forums :
    Inscription : Avril 2004
    Messages : 127
    Par défaut
    Citation Envoyé par haykelFST Voir le message
    Bonjour,

    Au lieu d'une valeur figée'APPEL', je veux passer une variable
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    DECLARE 
    @L_MEMO VARCHAR(80),
    @nameTable VARCHAR(80)
    SET @nameTable='APPEL'
     
    SELECT @L_MEMO= L_MEMO
    FROM OPENQUERY(DB264_LINK_SERVER, 'SELECT L_MEMO FROM Z_MEMO WHERE C_MEMO=2 AND N_TABORIGINE =@nameTable' ) AS T
    un message d'erreur est génerée suite au syntaxe incorrecte
    C'est normale puisque la chaîne contenante SQL ne peut pas être concaténée à l'intérieure de OPENQUERY().
    Il te faut SQL dynamique dans ce cas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    DECLARE 
      @table_name sysname,
      @first_name nvarchar(50),
      @sql nvarchar(max);
     
    SET @table_name = N'Person.Contact';
    SET @sql = N'SELECT @first_name = FirstName FROM OPENQUERY(SRV1, ''SELECT TOP 1 FirstName FROM AdventureWorks.' + @table_name + ''')';
    EXEC sp_executesql @sql, N'@first_name nvarchar(50) OUTPUT, @table_name sysname', @first_name = @first_name OUTPUT, @table_name = @table_name
    SELECT @first_name

Discussions similaires

  1. Valeur de retour d'une procédure stockée
    Par Rudyweb dans le forum MFC
    Réponses: 4
    Dernier message: 25/02/2005, 17h52
  2. fonction operator, valeur de retour
    Par butch dans le forum C++
    Réponses: 21
    Dernier message: 20/09/2004, 10h30
  3. [VB6] Valeur de retour pour une Form
    Par preverse dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 17/08/2004, 17h16
  4. Valeur de retour d'une procédure externe
    Par elekis dans le forum x86 32-bits / 64-bits
    Réponses: 4
    Dernier message: 16/04/2004, 16h45
  5. Pourquoi une seule valeur de retour pour les fonctions ?
    Par Bruno75 dans le forum Langages de programmation
    Réponses: 33
    Dernier message: 18/01/2004, 13h58

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