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

Windows Discussion :

Affectation de variable sur réponse OSQL


Sujet :

Windows

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de smooncef
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    118
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 118
    Par défaut Affectation de variable sur réponse OSQL
    Bonjour,

    Je souhaiterais affecter une variable sur la reponse d'une requete OSQL :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SET var=OSQL -E -Q select toto from tabletoto where toto='D'
    Mais le soucis est que la variable prends la requête comme valeur et non la réponse de la requête.

    Need some help please.

  2. #2
    Membre confirmé Avatar de smooncef
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    118
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 118
    Par défaut
    Citation Envoyé par smooncef Voir le message
    Bonjour,

    Je souhaiterais affecter une variable sur la reponse d'une requete OSQL :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SET var=OSQL -E -Q select toto from tabletoto where toto='D'
    Mais le soucis est que la variable prends la requête comme valeur et non la réponse de la requête.

    Need some help please.
    J'ai trouvé,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SET var=OSQL -E -Q select toto from tabletoto where toto='D'
    SET var1=%var%

  3. #3
    Membre éprouvé
    Avatar de koKoTis
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 438
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 438
    Par défaut
    si non on peut faire sa aussi avec une boucle for, en une seul ligne

  4. #4
    Membre confirmé Avatar de smooncef
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    118
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 118
    Par défaut
    Bah non finalement ça ne fonctionne pas dans ce contexte !!!
    Les voies de l'informatique sont impénétrables.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    @SET REPONSE=
    @SET FICDATA=
    @SET FICLOG=
    @SET FICDATA=CALL %REPFIC%\recupdata.bat
    @SET FICLOG=CALL %REPFIC%\recuplog.bat
    OSQL -E -Q "RESTORE DATABASE %CLIENT% FROM DISK=N'%REPBACK%\%FICBAK%' 
    WITH MOVE '%FICDATA%' TO '%REPDATA%\%CLIENT%_Data.mdf', 
    MOVE '%FICLOG%' TO '%REPLOG%\%CLIENT%_Log.ldf'"
    @IF NOT EXIST "%REPDATA%\%CLIENT%_Data.mdf" GOTO bdd2
    @IF NOT EXIST "%REPLOG%\%CLIENT%_Log.ldf" GOTO bdd2
    @ERASE %REPBACK%\%FICBAK%
    %SLEEP4%
    J'ai comme réponse :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    D:\BasesClients>OSQL -E -Q "RESTORE DATABASE TOTO FROM DISK=N'D:\BasesClients\BACKUP\BACKUP.BAK' 
    WITH MOVE 'CALL D:\BasesClients\recupdata.bat' TO 'D:\BasesClients\DATA\TOTO_Data.mdf', 
    MOVE 'CALL D:\BasesClients\recuplog.bat' TO 'D:\BasesClients\LOG\TOTO_Log.ldf'"
    Msg 3234, Niveau 16, État 2, Serveur 2835B, Ligne 1
    Le fichier logique 'CALL D:\BasesClients\recupdata.bat' ne fait pas partie de la base de données 'TOTO'. 
    Utilisez RESTORE FILELISTONLY pour lister les noms de fichier logiques.
    Msg 3013, Niveau 16, État 1, Serveur 2835B, Ligne 1
    RESTORE DATABASE s'est terminé anormalement.

  5. #5
    Membre éprouvé
    Avatar de koKoTis
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 438
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 438
    Par défaut
    sache que tu ne peut mettre qu'un seul ligne dans une variable

  6. #6
    Membre confirmé Avatar de smooncef
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    118
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 118
    Par défaut
    Ok, donc je suis obligé de passer par une boucle for !

  7. #7
    Membre confirmé Avatar de smooncef
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    118
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 118
    Par défaut
    Voici ma boucle :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    FOR /F "tokens=* delims=- " %%a in ('OSQL -E -Q "SELECT LogicalName FROM FicLogiques WHERE Type='D'"') do (set FICDATA=%%a)
    voici ce que ça affiche :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    D:\BasesClients>(set FICDATA=                           )
    
    D:\BasesClients>(set FICDATA= )
    
    D:\BasesClients>(set FICDATA=   ----------------------  )
    
    D:\BasesClients>(set FICDATA=NOM_DE_LA_BASE
                      )
    
    D:\BasesClients>(set FICDATA=                           )
    
    D:\BasesClients>(set FICDATA=(1 ligne affectée) )
    (1 ligne affectée)
    Et là je souhaite récupérer la ligne "NOM_DE_LA_BASE" en sachant que le nom fluctue tout le temps.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 06/01/2012, 00h31
  2. Affectation d'une variable sur un SELECT
    Par pc.bertineau dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 12/08/2009, 11h46
  3. Réponses: 2
    Dernier message: 02/07/2009, 15h05
  4. Réponses: 2
    Dernier message: 22/05/2009, 23h00
  5. Utilisation d'une variable sur plusieurs unités
    Par Yamaneko dans le forum Langage
    Réponses: 2
    Dernier message: 05/06/2003, 11h23

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