Hjem Personlig finansiering Slik håndterer du SQL-betingelser - dummies

Slik håndterer du SQL-betingelser - dummies

Innholdsfortegnelse:

Video: Python Web Apps with Flask by Ezra Zigmond 2024

Video: Python Web Apps with Flask by Ezra Zigmond 2024
Anonim

Du kan få programmet til å se på SQLSTATE etter utførelsen av hver SQL-setning. Det er flere muligheter for hva du kanskje vil gjøre neste. Hva gjør du med kunnskapen du får?

  • Hvis du finner en klassekode på 00 , vil du sannsynligvis ikke gjøre noe. Du vil at utførelsen skal fortsette som du opprinnelig planla.

  • Hvis du finner en klassekode på 01 eller 02 , vil du kanskje foreta en spesiell handling. Hvis du forventet "Advarsel" eller "Ikke funnet" indikasjon, vil du sannsynligvis la utførelsen fortsette. Hvis du ikke forventer noen av disse klassekodene, vil du sannsynligvis ha eksekveringsgren til en prosedyre som er spesielt utviklet for å håndtere det uventede, men ikke helt uventede, advarsel eller ikke funnet resultat.

  • Hvis du mottar noen annen klassekode, er noe galt. Du bør grense til en unntakshåndteringsprosedyre. Hvilken prosedyre du velger å avgrense, avhenger av innholdet i de tre underklassekarakterene, samt de to klassetegnene i SQLSTATE. Hvis flere forskjellige unntak er mulige, bør det være en unntakshåndteringsprosedyre for hver enkelt, fordi forskjellige unntak ofte krever forskjellige svar.

    Du kan kanskje rette feil eller finne løsninger. Andre feil kan være dødelig; Ingen vil dø, men du må ende opp med å avslutte søknaden.

Handler erklæring

Du kan sette en tilstandshåndterer i en sammensatt setning. For å opprette en tilstandshåndterer må du først deklarere tilstanden den skal håndtere. Tilstanden erklært kan være en slags unntak, eller det kan bare være noe som er sant. Her er noen mulige forhold.

Tilstand Beskrivelse
SQLSTATE VERDI

'xxyyy'

Spesifikk SQLSTATE verdi
SQLEXCEPTION SQLSTATE klasse annet enn 00, 01 eller 02 > SQLWARNING
SQLSTATE klasse 01 IKKE FUNDET
SQLSTATE klasse 02 Følgende er et eksempel på en tilstandsdeklarasjon:

BEGIN DECLARE constraint_violation CONDITION FOR SQLSTATE VALUE '23000'; SLUTT;

Dette eksemplet er ikke realistisk, fordi det ofte er SQL-setningen som kan føre til at tilstanden oppstår - så vel som håndterer som ville bli påkalt hvis tilstanden oppsto - vil også være vedlagt i BEGIN … END-strukturen.

Handler-handlinger og håndteringseffekter

Hvis en tilstand oppstår som påkaller en handler, utføres handlingen som er angitt av handleren. Denne handlingen er en SQL-setning, som kan være en sammensatt setning. Hvis håndteringsaksjonen fullføres vellykket, utfører handler-effekten.Følgende er en liste over de tre mulige håndteringseffekter:

FORTSETT: Fortsett kjøringen umiddelbart etter setningen som forårsaket at handleren ble påkalt.

  • EXIT: Fortsett kjøring etter sammensatt setning som inneholder håndterer.
  • UNDO: Løsne arbeidet til de forrige setningene i sammensatt setning og fortsett deretter utførelsen etter setningen som inneholder handleren.

  • Hvis håndterer kan rette opp hvilket problem som påberopes handleren, kan FORTSATT effekten være passende. EXIT-effekten kan være hensiktsmessig dersom håndtereren ikke løste problemet, men endringene som er gjort i sammensatte setningen behøver ikke å bli fortrykt. UNDO-effekten er hensiktsmessig hvis du vil returnere databasen til tilstanden den var i før sammensatt setningen begynte å bli kjørt.

Vurder følgende eksempel:

BEGIN ATOMIC DECLARE constraint_violation CONDITION FOR SQLSTATE VALUE '23000'; ERKLÆR UNDO HANDLER FOR begrensning_violering RESIGNAL; INSERT TIL elever (StudentID, Fname, Lname) VALUES (: sid,: sfname,: slname); INSERT i roster (ClassID, Class, StudentID) VALUES (: cid,: cname,: sid); SLUTT;

Hvis en av INSERT-setningene forårsaker et begrensningsbrudd, for eksempel å prøve å legge til en post med en primærnøkkel som dupliserer en primærnøkkel allerede i tabellen, antar SQLSTATE en verdi på '23000', og setter dermed betingelsen for begrensning_violering til en sann verdi.

Denne handlingen gjør at håndtereren UNDO gjør noen endringer som er gjort i noen tabeller med enten INSERT-kommandoen. RESIGNAL-setningen overfører kontrollen tilbake til prosedyren som kalte den gjeldende kjøringsprosedyren.

Hvis begge INSERT-setningene utføres, fortsetter kjøringen med setningen som følger END-søkeordet.

ATOMIC-nøkkelordet er obligatorisk når en håndterings effekt er UNDO. Dette er ikke tilfelle for håndtere som har effekt enten CONTINUE eller EXIT.

Slik håndterer du SQL-betingelser - dummies

Redaktørens valg

Topp 5 Fantasy Baseball Sites - Dummies

Topp 5 Fantasy Baseball Sites - Dummies

Hvis du er en stor fantasy baseball fan og ser ut til å bli med i verden av online fantasy sport, så se ikke lenger. Følgende liste inneholder de fem beste fantasybaseball-nettstedene i henhold til nettstedslayout, oppdatert statistikk, utenfor råd og hjelp og teamstyringsalternativer.

Hva skal man gjøre som en baseball coach - dummies

Hva skal man gjøre som en baseball coach - dummies

Som en baseball trener, du ikke bare må lede teamet ditt, du må ta med forsyninger for å praktisere. Du vil kanskje øke følgende liste, men den inneholder grunnleggende for å få til alle baseballpraksis: Riktig lager førstehjelpsutstyr Ekstra vann Øvelsesplan for dagen, oppdelt etter tid ...

Får utrustet til å spille baseball - dummies

Får utrustet til å spille baseball - dummies

Når du tar baseballfeltet, bør du ta med det beste utstyret som er tilgjengelig. Du trenger ikke å bruke store summer til å kjøpe toppkvalitets tilbehør så lenge du vet hva du skal se etter og hvor du skal finne den. Med mindre du er under 10 år, kjøp utstyr som oppfyller alle de store ligaspesifikasjonene. ...

Redaktørens valg

Hvordan du finner ditt nivå av oppmerksomhet - dummies

Hvordan du finner ditt nivå av oppmerksomhet - dummies

Du kan sikkert ta noen form for ikke-tradisjonell trening og dump det i en tønne merket "mind-body. "Det er greit hvis du foretrekker enkelhet og ikke vil bli innpakket med kategorisering og vurdering. Men du kan også kikke på treningsprogrammer på et dypere nivå, vurdere omfanget av oppmerksomhet i en ...

Hvordan du får mest mulig ut av din meditasjon - dummies

Hvordan du får mest mulig ut av din meditasjon - dummies

For å få mest mulig ut av meditasjonspraksis må forplikte seg til det. Når du begynner å meditere regelmessig, kan du høste utallige fordeler - fra lavere stress og kolesterol til høyere nivåer av tilfredshet og lykke. Her er noen tips for å maksimere meditasjonspraksis: Meditere jevnlig - helst hver dag. Sett bort en ...

Redaktørens valg

Slik bruker du det nye perspektivet i Adobe Illustrator CS6 - dummies

Slik bruker du det nye perspektivet i Adobe Illustrator CS6 - dummies

I Adobe Illustrator CS6 Du kan opprette og redigere kunstverk basert på perspektivgitterfunksjonen (introdusert i CS5). Gitteret er en stor hjelp i å skape vellykkede perspektivillustrasjoner. For å vise eller skjule standardperspektivruten, trykk Ctrl + Shift + I (Windows) eller Kommando + Skift + I (Mac). Du kan bruke verktøyet Perspective Grid på verktøylinjen til å ...

Hvordan å pakke inn tekst ved hjelp av AdobeCS5 Illustrator - dummies

Hvordan å pakke inn tekst ved hjelp av AdobeCS5 Illustrator - dummies

Ved hjelp av en tekstbrytestil i Adobe Creative Suite 5 (Adobe CS5) Illustrator-prosjektet er en enkel måte å legge til litt kreativitet. En tekstpakke tvinger tekst til å vikle rundt en grafikk.

Hvordan du bruker Life Paint-funksjonen i Adobe Illustrator CS6 - dummies

Hvordan du bruker Life Paint-funksjonen i Adobe Illustrator CS6 - dummies

Ikke bekymre deg om å fylle lukkede figurer eller la filler flykte fra objekter med hull i uønskede områder. Ved å bruke Live Paint-funksjonen til Adobe Illustrator CS6, kan du lage det bildet du ønsker og fylle ut regioner med farge. Live Paint-bøtta registrerer automatisk regioner som er sammensatt av uavhengige kryssende baner og fyller dem tilsvarende. Malingen ...