J'ai une procédure stockée qui appelle une autre procédure stockée. SP2 a un try/transaction/catch/rollback/raiserror. Si SP2 déclenche une erreur, va-t-il passer en SP1 à l'appelant, ou dois-je aussi imbriquer l'appel à SP2 dans un try/catch? Si ce dernier cas est le cas, comment puis-je m'assurer que je ne tue pas la "trace de la pile" de l'erreur du SP2 lors de l'élévation/la sortie du SP1?Flux d'exception dans une procédure stockée appelant une autre procédure stockée
- est-ce que cela déclenchera une erreur de SP2 et de sortie SP1?
EXEC dbo.storedProc2 @someParameter = @someValue
--Ou est-ce que je dois faire ceci?
BEGIN TRY
EXEC dbo.storedProc2 @someParameter = @someValue
END TRY
BEGIN CATCH
-- this is what I normally do in a simple catch/raise scenario:
-- will it kill the error stack?
DECLARE @ErrMsg VARCHAR(4000), @ErrSeverity INT, @ErrState INT, @ErrLine INT
SELECT @ErrMsg = ERROR_MESSAGE() + ' Line %d',
@ErrSeverity = ERROR_SEVERITY(),
@ErrState = ERROR_STATE(),
@ErrLine = ERROR_LINE()
RAISERROR(@ErrMsg, @ErrSeverity, @ErrState, @ErrLine)
END CATCH
L'erreur va-t-elle passer aux variables @Err dans SP1 dans l'exemple de ma question? –
@AJ - Je ne pense pas, sauf si vous utilisez des codes retour et des paramètres de sortie pour chaque appel 'SP'. – JNK