Oppsummering: i denne opplæringen vil du lære hvordan du bruker SQL Server RAISERROR
uttalelse for å generere egendefinerte feilmeldinger.
Hvis du utvikle en ny applikasjon, bør du bruke THROW
uttalelse i stedet.,
SQL Server RAISEERROR uttalelse oversikt
RAISERROR
uttalelse kan du generere dine egne feilmeldinger, og gå tilbake disse meldingene tilbake til programmet ved hjelp av samme format som et system advarsel eller feilmelding genereres av SQL Server-Database Motor. I tillegg RAISERROR
uttalelse lar deg angi en bestemt melding id, alvorlighetsgrad, og staten for feilmeldinger.,
følgende illustrerer syntaks for RAISERROR
uttalelse:
La oss se nærmere på syntaks for RAISERROR
for bedre forståelse.
message_id
message_id
er en bruker-definert feilmelding nummer som er lagret i sys.messages
catalog view.
for Å legge til en ny bruker-definert feilmelding nummer, bruker du den lagrede prosedyren sp_addmessage
. En bruker-definert feilmelding nummer skal være større enn 50 000., Som standard RAISERROR
uttalelse bruker message_id
50 000 for å heve en feil.,
følgende uttalelse legger til en egendefinert feilmelding til sys.messages
vis:
for Å bekrefte sette inn, kan du bruke følgende spørring:
Code language: SQL (Structured Query Language) (sql)
for Å bruke denne message_id du kjøre RAISEERROR
uttalelse som følger:
Code language: SQL (Structured Query Language) (sql)
Her er resultatet:
Code language: SQL (Structured Query Language) (sql)
for Å fjerne meldingen fra sys.messages
du kan bruke den lagrede prosedyren sp_dropmessage
., For eksempel, følgende uttalelse sletter meldingen id 50005:
Code language: SQL (Structured Query Language) (sql)
message_text
message_text
er en bruker-definert melding med formatering som printf
funksjon i C standard bibliotek. message_text
kan være opp til 2,047 tegn, 3 siste tegn som er reservert for ellipse (…). Hvis message_text
inneholder 2048 eller mer, vil det bli avkortet og er polstret med en ellipse.,
Når du angi message_text
, RAISERROR
uttalelse bruker message_id 50000 å heve feilmelding.
dette eksemplet bruker RAISERROR
statement å heve en feil med en melding tekst:
Code language: SQL (Structured Query Language) (sql)
output vil se ut som dette:
Code language: SQL (Structured Query Language) (sql)
alvorlighetsgraden
alvorlighetsgraden er et heltall mellom 0 og 25, med hvert nivå representerer alvorlige feil.
Code language: SQL (Structured Query Language) (sql)
state
staten er et heltall fra 0 til 255., Hvis du hever samme bruker-definert feil på flere steder, kan du bruke en unik staten nummer for hver plassering er å gjøre det enklere å finne hvilken del av koden som er årsaken til feil. For de fleste implementeringer, kan du bruke 1.
MED alternativ
alternativet kan være LOG
, NOWAIT
, eller SETERROR
:
-
WITH LOG
logger feilen i feilloggen og programloggen for forekomst av SQL Server-Database Motor., -
WITH NOWAIT
sender feilmelding til kunden umiddelbart. -
WITH SETERROR
angirERROR_NUMBER
og@@ERROR
verdiene til message_id eller 50000, uavhengig av alvorlighetsgrad.
SQL Server RAISERROR eksempler
La oss ta noen eksempler på bruk av RAISERROR
uttalelse for å få en bedre forståelse.,
A) ved Hjelp av SQL Server RAISERROR med PRØVE å FANGE blokkere eksempel
I dette eksempelet bruker vi RAISERROR
inne i en TRY
blokker for å føre til kjøring av å hoppe til forbundet CATCH
blokker. Inni CATCH
blokker, bruker vi RAISERROR
for å returnere feil informasjon som er påberopt CATCH
blokker.,
Her er resultatet:
Code language: SQL (Structured Query Language) (sql)
B) ved Hjelp av SQL Server RAISERROR uttalelse med en dynamisk melding tekst eksempel
følgende eksempel viser hvordan du bruker en lokal variabel for å gi melding tekst for en RAISERROR
uttalelse:
output er som følger:
Code language: SQL (Structured Query Language) (sql)
Når du skal bruke RAISERROR uttalelse
Du bruker RAISERROR
uttalelse i følgende scenarier:
- Feilsøke Handle-SQL-kode.
- gå Tilbake meldinger som inneholder variabel tekst.
- Undersøke verdier av data.,
- Føre til kjøring av å hoppe fra en
TRY
blokker til forbundetCATCH
blokker. - gå Tilbake feil informasjon fra
CATCH
blokker til innringere, enten ringe batch eller program.
I denne opplæringen vil du lære hvordan du bruker SQL Server RAISERROR
uttalelse for å generere egendefinerte feilmeldinger.