Précédent   Forum des professionnels en informatique > Bases de données > Sybase
Sybase Forum sur la base de données Sybase. Avant de poster -> F.A.Q Sybase, Tutoriels Sybase
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 03/08/2006, 18h49   #1
Membre habitué
 
Avatar de agougeon
 
Inscription : mai 2005
Messages : 253
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 253
Points : 106
Points : 106
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 :
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
agougeon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/08/2006, 10h20   #2
Rédacteur/Modérateur
 
Avatar de fadace
 
Homme Fabien Celaia
Administrateur de base de données
Inscription : octobre 2002
Messages : 3 779
Détails du profil
Informations personnelles :
Nom : Homme Fabien Celaia
Âge : 41
Localisation : Suisse

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

Informations forums :
Inscription : octobre 2002
Messages : 3 779
Points : 8 124
Points : 8 124
Envoyer un message via ICQ à fadace Envoyer un message via Skype™ à fadace
un export via xp_cmdshell ??

Code :
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
__________________
Sr DBA Oracle / Sybase / MS-SQL / DB2 / Informix / Postgresql
Administrateur SAP
Mes articles

Attention : pas de réponse technique par MP : pensez aux autres, passez par les forums !
fadace est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/08/2006, 15h05   #3
Membre habitué
 
Avatar de agougeon
 
Inscription : mai 2005
Messages : 253
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 253
Points : 106
Points : 106
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
agougeon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/08/2006, 19h45   #4
Rédacteur/Modérateur
 
Inscription : janvier 2006
Messages : 1 301
Détails du profil
Informations personnelles :
Âge : 52

Informations forums :
Inscription : janvier 2006
Messages : 1 301
Points : 1 505
Points : 1 505
Envoyer un message via AIM à mpeppler
Quelque chose comme ceci?

Code :
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
__________________
Michael Peppler
Membre de TeamSybase - www.teamsybase.com

"A successful [software] tool is one that was used to do something undreamed of by its author." -- S. C. Johnson
mpeppler est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/08/2006, 23h59   #5
Membre du Club
 
Inscription : octobre 2005
Messages : 79
Détails du profil
Informations personnelles :
Âge : 32

Informations forums :
Inscription : octobre 2005
Messages : 79
Points : 46
Points : 46
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 :
1
2
3
 
 
isql -U$SYN_DB_USER -P$SYN_DB_PWD -w3000 -iScript_In.sql -oScript_Out.sql
Ton script sql :

Code :
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 :
1
2
3
 
 
VAR=`cut -f2 Script_Out.sql`
La dernière partie sous Unix est à compléter et à tester.
lsone est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2006, 00h02   #6
Membre du Club
 
Inscription : octobre 2005
Messages : 79
Détails du profil
Informations personnelles :
Âge : 32

Informations forums :
Inscription : octobre 2005
Messages : 79
Points : 46
Points : 46
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.
lsone est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h58.


 
 
 
 
Partenaires

Hébergement Web