OVH Cloud OVH Cloud

Gestion des erreurs

3 réponses
Avatar
mml
Bonjour,

En Basic par exemple, on emploie la fonctionnalité 'on error goto' pour
gérer les erreurs dans une procédure.

Quel équivalent s'en rapproche-t-il le plus en SQL Server dans une procédure
stockée ?

--
Cordialement,

Marc LAGARDETTE

3 réponses

Avatar
hch
dans les procedures stockées vous devez tester la valeur de @@error

Si = 0 pas d'erreurs sinon erreur!!

la gestion se fait comme ceci a titre d'exemple:

SELECT @ins_error = @@ERROR

-- Test the error values.
IF @del_error = 0 AND @ins_error = 0

BEGIN
-- Success. Commit the transaction.
PRINT "The author information has been replaced"
COMMIT TRAN
END
ELSE
BEGIN
-- An error occurred. Indicate which operation(s) failed
-- and roll back the transaction.
IF @del_error <> 0
PRINT "An error occurred during execution of the DELETE
statement."

IF @ins_error <> 0
PRINT "An error occurred during execution of the INSERT
statement."

ROLLBACK Tran

hch
Bonjour,

En Basic par exemple, on emploie la fonctionnalité 'on error goto' pour
gérer les erreurs dans une procédure.

Quel équivalent s'en rapproche-t-il le plus en SQL Server dans une procédure
stockée ?

--
Cordialement,

Marc LAGARDETTE





Avatar
Chris V.
A noter :
@@ERROR est mise a jour apres chaque instruction, donc if faut ou la
stockee, ou la verifier tout de suite apres l'instruction a risque.

Aussi, l'agent SQL stoppe les jobs des qu'une erreur survient, sans laisser
le code de traitement d'erreur tourner

Chris



--
______________________________________________
It's still better that if it would have been worst, isn't it ?
C'est toujours mieux que si c'etait pire !
"hch" a écrit dans le message de news:

dans les procedures stockées vous devez tester la valeur de @@error

Si = 0 pas d'erreurs sinon erreur!!

la gestion se fait comme ceci a titre d'exemple:

SELECT @ins_error = @@ERROR

-- Test the error values.
IF @del_error = 0 AND @ins_error = 0

BEGIN
-- Success. Commit the transaction.
PRINT "The author information has been replaced"
COMMIT TRAN
END
ELSE
BEGIN
-- An error occurred. Indicate which operation(s) failed
-- and roll back the transaction.
IF @del_error <> 0
PRINT "An error occurred during execution of the DELETE
statement."

IF @ins_error <> 0
PRINT "An error occurred during execution of the INSERT
statement."

ROLLBACK Tran

hch
Bonjour,

En Basic par exemple, on emploie la fonctionnalité 'on error goto' pour
gérer les erreurs dans une procédure.

Quel équivalent s'en rapproche-t-il le plus en SQL Server dans une
procédure
stockée ?

--
Cordialement,

Marc LAGARDETTE







Avatar
mml
Merci beaucoup. Je vais tester.

"Chris V." a écrit dans le message de
news:
A noter :
@@ERROR est mise a jour apres chaque instruction, donc if faut ou la
stockee, ou la verifier tout de suite apres l'instruction a risque.

Aussi, l'agent SQL stoppe les jobs des qu'une erreur survient, sans


laisser
le code de traitement d'erreur tourner

Chris



--
______________________________________________
It's still better that if it would have been worst, isn't it ?
C'est toujours mieux que si c'etait pire !
"hch" a écrit dans le message de news:

> dans les procedures stockées vous devez tester la valeur de @@error
>
> Si = 0 pas d'erreurs sinon erreur!!
>
> la gestion se fait comme ceci a titre d'exemple:
>
> SELECT @ins_error = @@ERROR
>
> -- Test the error values.
> IF @del_error = 0 AND @ins_error = 0
>
> BEGIN
> -- Success. Commit the transaction.
> PRINT "The author information has been replaced"
> COMMIT TRAN
> END
> ELSE
> BEGIN
> -- An error occurred. Indicate which operation(s) failed
> -- and roll back the transaction.
> IF @del_error <> 0
> PRINT "An error occurred during execution of the DELETE
> statement."
>
> IF @ins_error <> 0
> PRINT "An error occurred during execution of the INSERT
> statement."
>
> ROLLBACK Tran
>
> hch
>> Bonjour,
>>
>> En Basic par exemple, on emploie la fonctionnalité 'on error goto' pour
>> gérer les erreurs dans une procédure.
>>
>> Quel équivalent s'en rapproche-t-il le plus en SQL Server dans une
>> procédure
>> stockée ?
>>
>> --
>> Cordialement,
>>
>> Marc LAGARDETTE
>>
>>
>>