Bonjour,
J'utilise le client isql pour exécuter des scripts sql sur mon serveur ASE 12.5
Je lance plusieurs exécutions a partir d'un scripts shell en redirigeant mes fichiers sql dans un pipe vers le programme isql
En résumé:
La dernière instruction me permet d'exécuter le contenu du fichier toto.sql dans ma base de données.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 $>cat toto.sql USE db_name GO select * from base_name GO $>cat toto.sql | isql -Umyuser -Pmypasswd -Smyserver
Maintenant pour des raisons compliqués, j'ai besoin de récupérer la valeur de retour de chaque exécutions.
En résumé je veux faire quelque chose du genre ...
Le but étant de vérifier à la fin si la variable @status est toujours égale a 0 ou non.
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
17 $>cat toto.sql USE db_name GO DECLARE @status int set @status = 0 select * from base_name set @status += (select @@error) GO update table_bidule set champ1 = toto from table_truc set @status += (select @@error) GO $>cat toto.sql | isql -Umyuser -Pmypasswd -Smyserver
Malheureusement ce que j'essaye de faire ne marche pas, car entre chaque instruction GO, la variable @status n'existe plus.
Une des solutions pourrait être supprimer les GO ... mais je suis obligé de les garder car sinon j'ai des problèmes au niveau du temps d'execution de mes requetes.
Ma question:
Es ce qu'il est possible de mettre à jour une variable (autre qu'une table) pour conserver les status d'exécutions des différentes commandes que j'exécute sans supprimer mes GO ??
Partager