SQL Server Raiserror -uttalelse

SQL Server Raiserror -uttalelse
Raiserror-setningen i SQL Server lar deg generere og vise brukerdefinerte feilmeldinger.

Ved hjelp av Raiserror-uttalelsen kan du opprette meldinger om tilpassede feil og vise dem i applikasjonene dine. Feilmeldingene generert av Raiserror-uttalelsen vil bruke samme format som systemgenererte meldinger.

Du kan også definere forskjellige parametere, for eksempel alvorlighetsgrad og meldingstilstanden.

Syntaksen til Raiserror -uttalelsen er som vist nedenfor:

raiserror (message_id | message_content | @local_variable
alvorlighetsgrad, tilstand
Med alternativ
);

La oss bryte ned syntaksen til Raiserror -uttalelsen:

  1. Message_id - The Message_id refererer til en bruker -definer Message_id som SP_AddMessage -prosedyren bruker for å lagre meldingen i SYS.Meldinger katalogvisning. Denne verdien skal være over 50 000.
  2. Message_content - Dette er det faktiske innholdet i feilmeldingen. Meldingen kan inneholde opptil 2.047 tegn. Hvis feilmeldingen overskrider denne verdien, vil SQL Server bare vise 2.044 tegn og deretter legge til ellipsis for å vise melding av avkortning. Formatet på meldingen ligner på Printf -funksjonen i C -programmering.
  3. @Local_Variable - Enhver variabel av en hvilken som helst karaktertype som holder en streng formatert i en identisk stil som Message_Content.
  4. Alvorlighetsgrad - definerer alvorlighetsnivået på meldingen som er vist i Raiserror -uttalelsen. Dette er en heltallverdi som spenner mellom 0 og 25, hver verdi som indikerer et høyt alvorlighetsnivå. Husk at enhver alvorlighetsverdi mellom 20 og 25 blir behandlet som dødelig. Hvis en dødelig feil mottas, avslutter SQL Server klientens tilkobling og logger feilmeldingen. For å spesifisere et alvorlighetsnivå på over 18, må du ha ALTER TRACE -tillatelser og være medlem av Sysadmin -rollen.
  5. State - Dette er en heltallverdi som varierer mellom 0 og 255. Statene kan bidra til å identifisere den spesifikke seksjonen som øker feilene.
  6. Med alternativ - denne parameteren brukes til å endre hvordan Raiserror -uttalelsen fungerer. De aksepterte alternativene inkluderer:
    1. Med log - viser meldingen til brukeren og logg feilen i feilloggene.
    2. Med SetError - angir automatisk feilen og @@ feilverdier til Message_id, og ser bort fra det spesifiserte feilnivået.
    3. Med Nowait - viser feilmeldingen til klienten umiddelbart.

Hint: Hvis ingen verdi for Message_id -parameteren er definert, vil Raiserror -setningen gi en feil med en ID på 50 000. Sørg derfor for at alle meldingene dine er over denne verdien.

Hint: Alvorlighetsnivået definert av SP_AddMessage -prosedyren blir overstyrt av den som er definert av Raiserror -uttalelsen.

Lag ad hoc -meldinger med SP_addMessage -prosedyren

For å legge til en feilmelding manuelt i SYS.Meldinger Katalogvisning, bruk SP_AddMessage -prosedyren som vist i følgende eksempel:

EXEC SP_ADDMESSAGE
@msgnum = 50001,
@severity = 10,
@MSGText = '[Feil] ... dette er en testfeil mess'ge';

For å se meldingen i katalogvisningen:

Velg * fra SYS.meldinger der Message_id = 50001;

Spørringen skal returnere som vist:

For å kjøre meldingen, bruk Raiserror -uttalelsen som vist:

Raiserror (50001,10,1);

Spørringen skal returnere:

[Feil] ... dette er en testfeilmelding

For å slette en melding fra SYS.Meldinger Katalogvisning, bruk SP_DropMessage som vist:

Exec sp_dropMessage @msgnum = 50001;

Raiserror -uttalelse i Try/Catch Block

Vi kan bruke Raiserror -uttalelsen for å kaste en feil i en prøve/fangstblokk, som vist i følgende eksempel på spørring:

Begynn å prøve
Raiserror ('Feil i forsøksblokken', 15, 1);
Slutt prøv
Begynn fangst
Erklære @errorMsg nvarchar (4000);
Erklære @severity int;
Erklære @e_state int;
PLUKKE UT
@errorMsg = error_message (),
@alvorlighetsgrad = error_severity (),
@E_State = error_state ();
Raiserror (@errorMsg, @severity, @e_state);
Sluttfangst

Hvis vi utfører spørringen, bør vi se følgende feilmelding:

MSG 50000, nivå 15, tilstand 1, linje 12
Feil i prøveblokken

Konklusjon

I denne artikkelen lærte du hvordan du bruker Raiserror-uttalelsen i SQL Server for å generere tilpassede feilmeldinger. Dette inkluderer å lage ad hoc -meldinger med SP_addMessage -prosedyren og bruke Raiserror -uttalelsen i Try/Catch -blokken. Vi håper du fant denne artikkelen nyttig. Sjekk ut andre Linux -hint -artikler for flere tips og informasjon.