sammanfattning: i den här handledningen lär du dig hur du använder SQL Server RAISERROR
-sats för att generera användardefinierade felmeddelanden.
om du utvecklar ett nytt program ska du istället använda THROW
– satsen.,
SQL Server RAISEERROR-översikt
RAISERROR
– satsen låter dig skapa egna felmeddelanden och returnera dessa meddelanden tillbaka till programmet med samma format som ett systemfel eller varningsmeddelande som genereras av SQL Server-databasmotorn. Dessutom låterRAISERROR
– satsen dig ställa in ett specifikt meddelande-id, svårighetsgrad och tillstånd för felmeddelandena.,
följande illustrerar syntaxen förRAISERROR
– satsen:
låt oss undersöka syntaxen förRAISERROR
för bättre förståelse.
message_id
message_id
är ett användardefinierat felmeddelande som lagras i katalogen sys.messages
.
om du vill lägga till ett nytt användardefinierat felmeddelande använder du den lagrade proceduren sp_addmessage
. Ett användardefinierat felmeddelandenummer ska vara större än 50 000., Som standard använder RAISERROR
satsen message_id
50 000 för att höja ett fel.,
följande uttalande lägger till ett eget felmeddelande i vyn sys.messages
:
för att verifiera inlägget använder du följande fråga:
Code language: SQL (Structured Query Language) (sql)
för att använda denna message_id, kör du uttalandet RAISEERROR
enligt följande:
Code language: SQL (Structured Query Language) (sql)
här är utgången:
Code language: SQL (Structured Query Language) (sql)
för att ta bort ett meddelande från sys.messages
använder du den lagrade proceduren sp_dropmessage
., Följande uttalande tar till exempel bort meddelande-id 50005:
Code language: SQL (Structured Query Language) (sql)
message_text
message_text
är ett användardefinierat meddelande med formatering som funktionen printf
I C-standardbiblioteket. message_text
kan vara upp till 2 047 tecken, 3 sista tecken är reserverade för ellipser (…). Om message_text
innehåller 2048 eller mer, kommer det att stympas och är vadderad med en ellips.,
När du angermessage_text
använderRAISERROR
message_id 50000 för att höja felmeddelandet.
följande exempel använderRAISERROR
för att höja ett fel med en meddelandetext:
Code language: SQL (Structured Query Language) (sql)
utdata kommer att se ut så här:
Code language: SQL (Structured Query Language) (sql)
svårighetsgrad
allvarlighetsgraden är ett heltal mellan 0 och 25, med varje nivå som representerar allvaret av felet.
Code language: SQL (Structured Query Language) (sql)
tillstånd
staten är ett heltal från 0 till 255., Om du höjer samma användardefinierade fel på flera platser kan du använda ett unikt tillståndsnummer för varje plats för att göra det lättare att hitta vilken del av koden som orsakar felen. För de flesta implementeringar kan du använda 1.
med alternativ
alternativet kan varaLOG
,NOWAIT
, ellerSETERROR
:
WITH LOG
loggar felet i felloggen och applikationsloggen för instansen av SQL Server-databasmotorn.,WITH NOWAIT
skickar felmeddelandet till klienten omedelbart.WITH SETERROR
ställer inERROR_NUMBER
och@@ERROR
värden till message_id eller 50000, oavsett allvarlighetsgrad.
SQL Server RAISERROR exempel
låt oss ta några exempel på att användaRAISERROR
för att få en bättre förståelse.,
a) använda SQL Server RAISERROR med försök CATCH block exempel
i det här exemplet använder viRAISERROR
inuti enTRY
blocket för att orsaka exekvering att hoppa till den tillhörandeCATCH
blocket. Inuti CATCH
– blocket använder viRAISERROR
för att returnera felinformationen som åberopadeCATCH
– blocket.,
här är utgången:
Code language: SQL (Structured Query Language) (sql)
B) använda SQL Server RAISERROR-sats med ett dynamiskt meddelandetextsexempel
följande exempel visar hur du använder en lokal variabel för att tillhandahålla meddelandetexten för enRAISERROR
– sats:
utgången är som följer:
Code language: SQL (Structured Query Language) (sql)
när du ska använda raiserror-satsen
du använderRAISERROR
I följande scenarier:
- felsöka Transact-SQL-kod.
- returnera meddelanden som innehåller variabel text.
- granska datavärdena.,
- få exekveringen att hoppa från ett
TRY
– block till det associeradeCATCH
– blocket. - returnera felinformation från
CATCH
blocket till uppringarna, antingen ringer batch eller program.
i den här handledningen lär du dig hur du använder SQL ServerRAISERROR
-satsen för att generera användardefinierade felmeddelanden.