Video: Python Web Apps with Flask by Ezra Zigmond 2024
Når du prøver å bestemme kilden til en SQL-feil, og SQLSTATE indikerer en unntakstilstand ved å holde en annen verdi enn 00000, 00001 eller 00002, kan det hende du vil håndtere situasjonen i ett på følgende måter:
-
Tilbakestill kontrollen til foreldreprosedyren som ringte underprosedyren som hevet unntaket.
-
Bruk en WHENEVER-klausul for å avgrense til en unntakshåndteringsrutine eller utføre annen handling.
-
Håndter unntaket på stedet med en sammensatt SQL-setning. En sammensatt SQL-setning består av en eller flere enkle SQL-setninger, sandwichet mellom BEGIN og END-søkeord.
Følgende er et eksempel på en unntakshåndterer for sammensatt setning:
BEGIN DECLARE ValueOutOfRange EXCEPTION FOR SQLSTATE'73003 '; INSERT TIL MAT (kalorier) verdier (: cal); SIGNAL ValueOutOfRange; MESSAGE 'Behandle en ny kaloriverdi. "UTSLIPP VED VALG AV UTFØR ET MELDING" Håndtering av kaloriintervallfeilen "; NÅR ANDRE DER ER TILBAKE; END
Med ett eller flere DECLARE-setninger kan du gi navn til bestemte SQLSTATE-verdier som du mistenker kan oppstå. INSERT-erklæringen er den som kan forårsake et unntak. Hvis verdien av: cal overstiger maksimumsverdien for et SMALLINT-dataelement, er SQLSTATE satt til "73003". SIGNAL-setningen signalerer en unntakstilstand. Det fjerner det øverste diagnostiske området.
Den setter RETURNED_SQLSTATE-feltet i diagnostikkområdet til SQLSTATE for det nevnte unntaket. Hvis det ikke har skjedd noe unntak, utføres serien av uttalelser som er representert av MESSAGE 'Process a new calorie value' -erklæringen. Men hvis et unntak har skjedd, hoppes denne serien av setninger over, og EXCEPTION-setningen utføres.
Hvis unntaket var et ValueOutOfRange unntak, utføres en rekke setninger representert av MESSAGE 'Håndtering av kaloriintervallfeil'-setningen. RESIGNAL-setningen utføres hvis unntaket ikke er et ValueOutOfRange-unntak.
RESIGNAL overfører bare kontrollen over utførelsen til den ringe foreldreprosedyren. Denne prosedyren kan ha ytterligere feilhåndteringskode for å håndtere unntak annet enn den forventede feilen utenfor rekkevidde.