SQL Server RAISERROR (Polski)

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 LOG rejestruje błąd w dzienniku błędów i dzienniku aplikacji dla instancji silnika bazy danych SQL Server.,
  • WITH NOWAIT natychmiast wysyła komunikat o błędzie do klienta.
  • WITH SETERROR ustawia wartościERROR_NUMBER I@@ERROR na 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 blokuTRY do powiązanego blokuCATCH.
  • Zwraca informacje o błędzie z blokuCATCH do 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.

Share

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *