Prøv å fange blokker i SQL Server

Prøv å fange blokker i SQL Server
Uansett hvor perfekt koden din prøver å være, er det alltid en sjanse for feil. Det er derfor best å iverksette feilhåndteringstiltak for å fange og håndtere feil før de bryter funksjonaliteten til applikasjonene dine.

I denne guiden lærer du hvordan du implementerer feilhåndtering i SQL Server ved å bruke Try and Catch -blokker.

Hvis du ønsker å lære hvordan du genererer brukerdefinerte feilmeldinger, kan du sjekke opplæringen vår på SQL Server Raiserror Tutorial.

Introduksjon

Prøv- og fangeblokker i SQL -serveren lar deg forutsi og nådig håndtere feil som kan oppstå i SQL -spørsmålene.

Lukk først SQL -spørsmålene som kan forårsake feil i en prøveblokk. Du kan deretter legge til en fangstblokk når et unntak er hevet.

Syntaksen for en prøveblokk er som vist:

begynn å prøve
-- Prøv å kjøre disse uttalelsene
sluttprøv;

Etter forsøksblokken kan du stille en fangstblokk som følger lignende syntaks som vist:

Begynn fangst
-- Fang uttalelser
Sluttfangst

Først vil SQL -serveren prøve å kjøre koden inne i prøveblokken. Hvis det ikke oppstår feil/unntak, hopper den over fangstblokken og fortsetter med utførelsen.

Imidlertid, hvis det oppstår en feil i prøveblokken, hopper utførelsen inne i fangsten og utfører koden i den blokken.

Syntaksen for en full prøve/fangstblokk er som vist:

begynn å prøve
-- prøve å kjøre meg
ende
Begynn fangst
-- Kjør meiferrorintry
endcatch;

Du kan iverksette tiltak for å håndtere den hevede feilen i fangstblokken, for eksempel å vise meldinger ved hjelp av Raiserror og Print -uttalelser. Husk at feilmeldingen i fangstblokken ikke blir returnert til applikasjonen med mindre bruk av mekanismer, for eksempel en valgt setning.

Du kan bruke spesielle funksjoner for å få detaljert informasjon om feilen:

  1. Error_number () - Returnerer en intern melding -ID for feilen.
  2. Error_severity () - viser alvorlighetsnivået på feilen. En verdi mellom 0 og 25 med høyere alvorlighetsgrad indikerer et høyt nivå av alvorlighetsgrad. Merk en alvorlighetsverdi på 20 - 25 er dødelig.
  3. Error_state - tilstanden til feilmeldingen. En verdi mellom 0 - 255.
  4. Error_message - en beskrivende melding om feilen som har oppstått.
  5. Error_procedure () - viser navnet på funksjonen, utløseren eller lagret prosedyre der feilen ble hevet.

Forsikre deg om å bruke de tidligere funksjonene i en fangstblokk; Ellers vil de returnere en nullverdi.

SQL Server prøv/fange eksempler

La oss bruke et skill. Begynn med å lage en prosedyre som vist i følgende spørsmål:

-- Få feilinformasjon
createProcedureGet_errorinfo
som
SelectError_Number () AsRornumber,
Error_severity () assverdighet,
Error_state () aserrorstate,
Error_procedure () aserrorprocedure,
Error_message () aserrororessage,
Error_line () aserrorline
Begintry
-- DivideByZeroError
Velg 1/0;
ende
Begynn fangst
-- Kjør prosedyreTogeterrorInfo
execget_errorinfo;
sluttfangst;

I eksemplet ovenfor oppretter vi en lagret prosedyre for å hente informasjon om en feil. Deretter reiser vi en feil ved å dykke med null.

Hvis vi kjører spørringen over, bør vi få en utdata som:

Hva skjer hvis det ikke er noen feil i fangstblokken som vist:

Begintry
-- Ingen feil
SELECT100/5ASRESULT;
ende
Begynn fangst
-- Kjør prosedyreTogeterrorInfo
execget_errorinfo;
endcatch;

Siden det ikke er noen feil i prøveblokken, hopper SQL -serveren hopper over fangstblokkene og returnerer resultatet. Et eksempel på resultatet er som vist:

Konklusjon

Denne guiden dekket implementering og bruk av feilhåndtering i SQL -serveren ved hjelp av Try/Catch -blokker. I tillegg ble spesielle funksjoner forklart og gitt for å hente detaljert informasjon om feilen. Vi håper du fant denne artikkelen nyttig. Sjekk ut flere Linux -hint -artikler for tips og informasjon på SQL -servere.