Bonjour,
1/ Comment récupérer dans un shell « sh » les codes erreurs renvoyés par une procédure stockée SYBASE ?
2/ Comment récupérer dans un shell « sh » le nombre de lignes traités lors du DELETE (ou de lINSERT, etc.) ?
D’avance merci pour votre aide
Exemple de procédure stockée :
CREATE PROC Recyclage (
@error_message varchar(255) = NULL OUTPUT,@error INT
)
AS
BEGIN
SET nocount ON
DECLARE @DUREE_OLD_DATA INT, @DATE_EXPLOIT char
SELECT @DUREE_OLD_DATA = -15
SELECT @DATE_EXPLOIT = convert(char,getdate(),112)
/*Suppression des tickets recyclés */
DELETE FROM WORK
WHERE date < convert(char,dateadd(day,@DUREE_OLD_DATA,getdate()),112)
/*Gestion ds erreurs*/
SELECT @error = @@ERROR
IF (@error <> 0)
BEGIN
SELECT @error_message = 'Erreur !!! Incident lors de la suppression des tickets recyclés'
GOTO THE_END
END
THE_END:
RETURN @error
END
Exemple shell « sh » appelant le procédure stockée :
#!/bin/sh
main ()
{
## variable de date de debut de traitement
USER=$USER_SYB_DBO
PASS=$PASS_SYB_DBO
SERVER=$SERVER
DS_DATABASE_CUST=$DS_DATABASE_CUST
date_traitement_debut=$(date +%d-%m-%y)
heure_traitement_debut=$(date +%H:%M:%S)
## debut du traitement
echo "$(date +%d-%m-%y) $(date +%H:%M:%S) Debut du traitement"
echo "$(date +%d-%m-%y) $(date +%H:%M:%S) ---- Debut"
isql -U$USER -P$PASS -S$SERVER <<THEEND 2>&1
use $DS_DATABASE_CUST
go
SET nocount ON
EXEC Recyclage @error_message=NULL,@error=0
go
quit
THEEND
echo "$(date +%d-%m-%y) $(date +%H:%M:%S) ---- Fin "
date_traitement_fin=$(date +%d-%m-%y)
heure_traitement_fin=$(date +%H:%M:%S)
echo "$(date +%d-%m-%y) $(date +%H:%M:%S) Fin du traitement"
echo "------------------------------------------------------------------------"
echo "| Date / Heure de dibut : $date_traitement_debut $heure_traitement_debut"
echo "| Date / Heure de fin : $date_traitement_fin $heure_traitement_fin "
echo "------------------------------------------------------------------------"
}
## Traitement Principal
main $@ 1>> log_traitement_$$_`date +%Y%m%d%H%M%`.log
exit 0
Partager