Podsumowanie: w tym samouczku dowiesz się, jak używać instrukcji SQL Server RAISERROR do generowania komunikatów o błędach zdefiniowanych przez użytkownika.
Jeśli tworzysz nową aplikację, powinieneś użyć instrukcjiTHROW.,
SQL Server raiseerror statement overview
InstrukcjaRAISERROR umożliwia generowanie własnych komunikatów o błędach i zwracanie tych komunikatów z powrotem do aplikacji przy użyciu tego samego formatu, co komunikat o błędzie systemowym lub ostrzeżenie generowane przez silnik bazy danych SQL Server. Ponadto InstrukcjaRAISERROR pozwala ustawić określony identyfikator wiadomości, poziom nasilenia i stan komunikatów o błędach.,
poniżej przedstawiono składnię instrukcji RAISERROR:
przyjrzyjmy się składni instrukcji RAISERROR dla lepszego zrozumienia.
message_id
message_id jest zdefiniowanym przez użytkownika numerem Komunikatu o błędzie przechowywanym w widoku katalogusys.messages.
aby dodać nowy numer komunikatu o błędzie zdefiniowany przez użytkownika, należy użyć procedury składowanej sp_addmessage. Zdefiniowany przez użytkownika numer komunikatu o błędzie powinien być większy niż 50 000., Domyślnie InstrukcjaRAISERROR używamessage_id 50,000 do zgłoszenia błędu.,
poniższe polecenie dodaje niestandardowy komunikat o błędzie do widoku sys.messages:
aby zweryfikować wstawkę, należy użyć następującego zapytania:
Code language: SQL (Structured Query Language) (sql)
aby użyć tego message_id, należy wykonać polecenie RAISEERROR w następujący sposób:
Code language: SQL (Structured Query Language) (sql)
oto wyjście:
Code language: SQL (Structured Query Language) (sql)
aby usunąć wiadomość z sys.messages, używasz procedury składowanej sp_dropmessage., Na przykład, następujące polecenie usuwa wiadomość o id 50005:
Code language: SQL (Structured Query Language) (sql)
message_text
message_text jest zdefiniowaną przez użytkownika Komunikatem z formatowaniem podobnym do funkcji printf w bibliotece standardowej C. message_text może mieć maksymalnie 2047 znaków, 3 ostatnie znaki są zarezerwowane dla elipsy (…). Jeśli message_text zawiera 2048 lub więcej, zostanie obcięty i wyściełany wielokropkiem.,
gdy podaszmessage_text, InstrukcjaRAISERROR używa message_id 50000 do wywołania Komunikatu o błędzie.
poniższy przykład używa instrukcji RAISERROR, aby wywołać błąd z tekstem wiadomości:
Code language: SQL (Structured Query Language) (sql)
wynik będzie wyglądał następująco:
Code language: SQL (Structured Query Language) (sql)
severity
poziom severity jest liczba całkowita między 0 a 25, przy czym każdy poziom reprezentuje powagę błędu.
Code language: SQL (Structured Query Language) (sql)
stan
stan jest liczbą całkowitą od 0 do 255., Jeśli wystąpi ten sam błąd zdefiniowany przez użytkownika w wielu lokalizacjach, możesz użyć unikalnego numeru stanu dla każdej lokalizacji, aby łatwiej znaleźć sekcję kodu, która powoduje błędy. Dla większości implementacji można użyć 1.
z opcją
opcja może być LOG, NOWAIT lub SETERROR:
-
WITH LOGrejestruje błąd w dzienniku błędów i dzienniku aplikacji dla instancji silnika bazy danych SQL Server., WITH NOWAITnatychmiast wysyła komunikat o błędzie do klienta.WITH SETERRORustawia wartościERROR_NUMBERI@@ERRORna message_id lub 50000, niezależnie od poziomu ważności.
przykłady SQL Server RAISERROR
weźmy kilka przykładów użycia instrukcjiRAISERROR, aby uzyskać lepsze zrozumienie.,
A) użycie SQL Server RAISERROR z try CATCH block przykład
w tym przykładzie używamy bloku RAISERRORwewnątrz bloku TRY, aby spowodować przejście do powiązanego bloku CATCH. Wewnątrz bloku CATCH używamy bloku RAISERROR, aby zwrócić informacje o błędzie wywołującym blok CATCH.,
oto wyjście:
Code language: SQL (Structured Query Language) (sql)
B) UŻYWANIE instrukcji SQL Server RAISERROR z dynamicznym tekstem wiadomości przykład
poniższy przykład pokazuje, jak użyć zmiennej lokalnej do dostarczenia tekstu wiadomości dla RAISERROR Instrukcja:
wyjście jest następujące:
Code language: SQL (Structured Query Language) (sql)
kiedy używać instrukcji RAISERROR
używasz instrukcji RAISERROR w następujących scenariuszach:
- rozwiązywanie problemów z kodem Transact-SQL.
- zwraca wiadomości zawierające zmienny tekst.
- sprawdza wartości danych.,
- powoduje, że wykonanie przeskakuje z bloku
TRYdo powiązanego blokuCATCH. - Zwraca informacje o błędzie z bloku
CATCHdo wywołujących, zarówno wywołujących batch, jak i aplikację.
w tym samouczku dowiesz się, jak używać instrukcji SQL Server RAISERROR do generowania komunikatów o błędach zdefiniowanych przez użytkownika.