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 LOGloggar felet i felloggen och applikationsloggen för instansen av SQL Server-databasmotorn.,WITH NOWAITskickar felmeddelandet till klienten omedelbart.WITH SETERRORställer inERROR_NUMBERoch@@ERRORvä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
CATCHblocket 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.