Video: Python Web Apps with Flask by Ezra Zigmond 2025
Når du forsøger at bestemme kilden til en SQL-fejl, og SQLSTATE angiver en undtagelsestilstand ved at holde en anden værdi end 00000, 00001 eller 00002, vil du måske håndtere situationen i en på følgende måder:
-
Ret kontrol til forældelsesproceduren, der kaldte den underprocedure, der hævede undtagelsen.
-
Brug en WHENEVER-klausul til at filialere til en undtagelseshåndteringsrutine eller udføre nogle andre handlinger.
-
Håndter undtagelsen på stedet med en sammensætning SQL-sætning. En sammensat SQL-sætning består af en eller flere enkle SQL-sætninger, som er sandwichet mellem BEGIN og END-søgeord.
Følgende er et eksempel på en undtagelseshåndterer med sammensatte opgørelser:
BEGIN DECLARE ValueOutOfRange EXCEPTION FOR SQLSTATE'73003 '; INSERT TIL FØDEVARER (Kalorier) VÆRDIER (: cal); SIGNAL ValueOutOfRange; MESSAGE 'Behandle en ny kalorieværdi. 'UNDTAGELSE, NÅR VALG UDFØLGER DER MEDDELELSE' Håndtering af kalorieintervalfejlen '; Hvornår andre end resign END
Med et eller flere DECLARE-sætninger kan du angive bestemte SQLSTATE-værdier, som du mistanke måtte opstå. INSERT-erklæringen er den, der kan medføre en undtagelse. Hvis værdien af: cal overstiger maksimumsværdien for et SMALLINT-dataelement, er SQLSTATE sat til "73003". SIGNAL-sætningen signalerer en undtagelsestilstand. Det rydder det øverste diagnostikområde.
Den angiver feltet RETURNED_SQLSTATE i diagnostikområdet til SQLSTATE for den navngivne undtagelse. Hvis der ikke er nogen undtagelse, udføres sætningen af udsagn, der er repræsenteret af meddelelsen 'Process a new calorie value'. Hvis en undtagelse er indtruffet, overskrides imidlertid denne række sætninger, og EXCEPTION-sætningen udføres.
Hvis undtagelsen var en værdiOutOfRange undtagelse, udføres en række udsagn repræsenteret af meddelelsen "Håndtering af kalorieintervalfejlen". RESIGNAL-sætningen udføres, hvis undtagelsen ikke er en værdiOutOfRange-undtagelse.
RESIGNAL overfører kun kontrol med udførelse til den kaldende forældelsesprocedure. Denne procedure kan have yderligere fejlhåndterings kode for at håndtere andre undtagelser end den forventede værdi uden for rækkevidde.