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

Sybase Discussion :

[T-SQL]recuperer un retour de requete dans une variable shell


Sujet :

Sybase

  1. #1
    Membre habitué Avatar de agougeon
    Inscrit en
    Mai 2005
    Messages
    253
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 253
    Points : 147
    Points
    147
    Par défaut [T-SQL]recuperer un retour de requete dans une variable shell
    Bonjour,
    Je developpe un batch en korn shell et je desire recuperer le resultat d'une requete dans une variable.
    Voila mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    EVT_DAT=$(isql -U$SYN_DB_USER -P$SYN_DB_PWD <<!! | nawk ' /"EVT_DAT"/ { print $2;} '
    declare @INST_NUM int
    select @INST_NUM = max(INST_NUM) from tempdb..CAPCHOOSER
    select "EVT_DAT", EVT_DAT
    from from tempdb..CAPCHOOSER
    where INST_NUM = 1515133
    go
    quit
    !!)
    Je testerai demain, mais si vous voyez autre chose, je suis preneur.
    Merci

  2. #2
    Rédacteur/Modérateur

    Avatar de Fabien Celaia
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2002
    Messages
    4 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2002
    Messages : 4 224
    Points : 19 566
    Points
    19 566
    Billets dans le blog
    25
    Par défaut
    un export via xp_cmdshell ??

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     isql -U$SYN_DB_USER -P$SYN_DB_PWD -DVotreBase << EOF
    declare @INST_NUM varchar(100)
    select @INST_NUM = 'export EVT_DAT='&convert(varchar(100), max(INST_NUM)) from tempdb..CAPCHOOSER
    select "EVT_DAT", EVT_DAT
    from from tempdb..CAPCHOOSER
    where INST_NUM = 1515133
    exec xp_cmdshell @INST_NUM
    go
    quit
    EOF
    Bien que je trouve votre méthode plus élégante

  3. #3
    Membre habitué Avatar de agougeon
    Inscrit en
    Mai 2005
    Messages
    253
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 253
    Points : 147
    Points
    147
    Par défaut
    J'ai une nouvelle interrogation...
    Maintenant je desire faire le contraire, c'est a dire utiliser la valeur d'une variable shell dans une requete sql.

    Merci

  4. #4
    Membre chevronné

    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 307
    Détails du profil
    Informations personnelles :
    Âge : 65
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 307
    Points : 1 828
    Points
    1 828
    Par défaut
    Quelque chose comme ceci?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
    #!/bin/ksh
     
    VAR=master
     
    isql -Usa -P... -SFOO <<EOF
    select * from sysusages where dbid = db_id('$VAR')
    go
    EOF
    Michael

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    79
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 79
    Points : 78
    Points
    78
    Par défaut
    Tu peux également diriger le resultset de ta requete dans un fichier de sortie avec l'option -o de isql.
    Et exploiter, le résultset avec des commandes Unix type grep, awk, etc ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    isql -U$SYN_DB_USER -P$SYN_DB_PWD -w3000 -iScript_In.sql -oScript_Out.sql
    Ton script sql :

    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
     
     
    /*
    ** Script_In.sql
    */
    use tempdb
    go
     
    declare @INST_NUM int
     
    select @INST_NUM = max(INST_NUM) from tempdb..CAPCHOOSER
     
    select "EVT_DAT", EVT_DAT
    from from tempdb..CAPCHOOSER
    where @INST_NUM = 1515133
    go
    Exploite ton script en sortie (le resultset) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    VAR=`cut -f2 Script_Out.sql`
    La dernière partie sous Unix est à compléter et à tester.

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    79
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 79
    Points : 78
    Points
    78
    Par défaut
    Tu peux même déclarer avec export (sous ksh) des variables dans un fichier.
    Et appeler ce dernier dans un script ksh puis utiliser les variables dans une session sql.

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

Discussions similaires

  1. [AC-2000] Comment Recuperer la valeur d'un requete dans une variable
    Par michel.r06 dans le forum VBA Access
    Réponses: 2
    Dernier message: 16/01/2015, 13h26
  2. Recuperer les données d'une requete dans UNE variable
    Par Devilju69 dans le forum Langage
    Réponses: 5
    Dernier message: 05/01/2014, 01h52
  3. Recuperer le resultat d'une requete dans une variable
    Par siro1 dans le forum Développement
    Réponses: 3
    Dernier message: 03/12/2009, 11h42
  4. Recuperer le resultat d'une requete dans une variable
    Par mat777 dans le forum VBA Access
    Réponses: 9
    Dernier message: 05/02/2008, 14h34
  5. Réponses: 7
    Dernier message: 02/05/2006, 17h28

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