Video: HACKLOG 2x05 - Fondamentali sulla Programmazione PHP 2024
Wanneer u probeert de bron van een SQL-fout te achterhalen en SQLSTATE een uitzonderingsvoorwaarde aangeeft door een andere waarde dan 00000, 00001 of 00002 aan te houden, wilt u misschien de situatie in één behandelen van de volgende manieren:
-
Stuur terug naar de bovenliggende procedure die de subprocedure heeft genoemd die de uitzondering heeft verhoogd.
-
Gebruik een WHENEVER-component om naar een routine voor uitzonderingsafhandeling te gaan of een andere actie uit te voeren.
-
Behandel de uitzondering ter plaatse met een verbinding SQL-instructie. Een samengestelde SQL-instructie bestaat uit een of meer eenvoudige SQL-instructies, ingeklemd tussen BEGIN- en END-trefwoorden.
Het volgende is een voorbeeld van een uitzonderingsafhandelingsprogramma voor samengestelde verklaringen:
BEGIN VERKLARING ValueOutOfRange EXCEPTION FOR SQLSTATE'73003 '; VOEG IN VOEDSEL IN (Calorieën) WAARDEN (: cal); SIGNAL ValueOutOfRange; MESSAGE 'Verwerk een nieuwe caloriewaarde. 'UITZONDERING WANNEER ValueOutOfREN DAN BERICHT' De caloriebereikfout afhandelen '; WANNEER ANDEREN DAN WEERSTANDIG ZIJN; END
Met een of meer DECLARE-instructies kunt u namen geven aan specifieke SQLSTATE-waarden waarvan u vermoedt dat ze zich kunnen voordoen. De INSERT-instructie is de instructie waardoor een uitzondering kan optreden. Als de waarde van: cal de maximumwaarde voor een SMALLINT-gegevensitem overschrijdt, is SQLSTATE ingesteld op "73003". De SIGNAL-instructie signaleert een uitzonderingsconditie. Hiermee wordt het bovenste diagnosegebied gewist.
Het stelt het veld RETURNED_SQLSTATE van het diagnostische gebied in op de SQLSTATE voor de benoemde uitzondering. Als er geen uitzondering is opgetreden, wordt de reeks instructies weergegeven door het bericht MESSAGE 'Een nieuwe caloriewaarde verwerken' uitgevoerd. Als er echter een uitzondering is opgetreden, wordt die reeks instructies overgeslagen en wordt de UITZONDERLIJK-instructie uitgevoerd.
Als de uitzondering een ValueOutOfRange-uitzondering was, wordt een reeks instructies uitgevoerd die wordt weergegeven door de melding MESSAGE 'Omgaan met de caloriebereikfout'. De instructie RESIGNAL wordt uitgevoerd als de uitzondering geen ValueOutOfRange-uitzondering is.
RESIGNAL geeft alleen de controle over de uitvoering door aan de aanvragende ouderprocedure. Die procedure bevat mogelijk een andere foutafhandelingscode om andere uitzonderingen dan de verwachte fout voor waarde-buitenbereik te behandelen.