Scope de la valeur de DECLARE
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é:
Code:
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 |
La dernière instruction me permet d'exécuter le contenu du fichier toto.sql dans ma base de données.
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 ...
Code:
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 |
Le but étant de vérifier à la fin si la variable @status est toujours égale a 0 ou non.
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 ??