Générer une erreur manuellement en T-SQL pour sauter à COMMENCER bloc CATCH
Est-il possible de générer une erreur dans une procédure stockée manuellement pour arrêter l'exécution et le saut à l' BEGIN CATCH
bloc? Certains analogique de throw new Exception()
dans C#
.
Voici ma procédure stockée du corps:
BEGIN TRY
BEGIN TRAN
-- do something
IF @foobar IS NULL
-- here i want to raise an error to rollback transaction
-- do something next
COMMIT TRAN
END TRY
BEGIN CATCH
IF @@trancount > 0
ROLLBACK TRAN
END CATCH
Je sais que d'une manière: SELECT 1/0
Mais c'est horrible!!
Vous devez vous connecter pour publier un commentaire.
vous pouvez utiliser
raiserror
. Lire plus de détails ici--à partir de MSDN
MODIFIER
Si vous utilisez SQL Server 2012+ vous pouvez utiliser
throw
clause. Ici sont les détails.Vous pouvez utiliser
THROW
(disponible dans SQL Server 2012+):MSDN JETER (Transact-SQL)
Les différences Entre RAISERROR et de le JETER dans Sql Server
Vous êtes à la recherche pour
RAISERROR
.À partir de MSDN:
CodeProject a un bon article qui décrit également en profondeur les détails de la façon dont il fonctionne et comment l'utiliser.
SQL a une erreur de mécanisme de production de
Il suffit de regarder Raiserror dans la documentation en Ligne. Mais.. vous devez générer une erreur de la gravité, une erreur à la gravité 0 thru 10 ne vous cause pas de saut au bloc catch.
JETER (Transact-SQL)
Soulève une exception et transfère l'exécution d'un bloc CATCH d'un TRY...CATCH dans SQL Server 2017.
Veuillez consulter le lien ci-dessous
T-SQL Jeter l'Exception