Video: Building Dynamic Web Apps with Laravel by Eric Ouyang 2024
När du försöker bestämma källan till ett SQL-fel och SQLSTATE anger ett undantagsvillkor genom att hålla ett annat värde än 00000, 00001 eller 00002, kanske du vill hantera situationen i ett på följande sätt:
-
Returnera kontrollen till föräldraproceduren som ringde underproceduren som höjde undantaget.
-
Använd en WHENEVER-klausul för att filialera till ett undantagshanteringsrutin eller utföra andra åtgärder.
-
Hantera undantaget på platsen med en förening SQL-förklaring. Ett sammansatt SQL-formulär består av en eller flera enkla SQL-satser, som sitter mellan BEGIN och END-nyckelord.
Följande är ett exempel på en undantagshanterare för sammansatt uttalande:
BEGIN DECLARE ValueOutOfRange EXCEPTION FÖR SQLSTATE'73003 '; INSÄTT I FOODS (kalorier) VÄRDEN (: cal); SIGNAL ValueOutOfRange; MESSAGE 'Behandla ett nytt kalorivärde. "EXCEPTION WHEN ValueOutOfRange THEN MESSAGE" Hantera kaloriintervallfelet "; När andra än resignal; END
Med ett eller flera DECLARE-uttalanden kan du ge namn till specifika SQLSTATE-värden som du misstänker kan uppstå. INSERT-satsen är den som kan orsaka ett undantag att inträffa. Om värdet av: cal överskrider maximivärdet för en SMALLINT-data, är SQLSTATE inställd på "73003". SIGNAL-satsen anger ett undantagsvillkor. Det rensar det bästa diagnostikområdet.
Den anger RETURNED_SQLSTATE-fältet i diagnostikområdet till SQLSTATE för det angivna undantaget. Om inget undantag har inträffat exekveras serien av uttalanden som representeras av meddelandet "Process a new calorie value". Om ett undantag har inträffat hoppas dock den här serien av uttalanden över, och EXCEPTION-anteckningen utförs.
Om undantaget var ett värdeOutOfRange-undantag, utförs en serie uttalanden som representeras av meddelandet "Hantering av kaloriintervallfelet". RESIGNAL-satsen utförs om undantaget inte är ett värdeOutOfRange-undantag.
RESIGNAL överför bara kontrollen av utförandet till det uppringande föräldraproceduren. Det förfarandet kan ha ytterligare felhanteringskoder för att hantera andra undantag än det förväntade värdet utanför felet.