Blog JSystems - z miłości do programowania

Szukaj

Obsługa wyjątków w T-SQL

@@ERROR


Zmienna @@ERROR zwraca wartość 0 jeśli ostatnie polecenie umieszczone w kodzie przed nią zakończyło się sukcesem lub numer błędu jaki został wygenerowany przez wcześniejsze polecenie. Należy jednak pamiętać że jeśli w kodzie umieścimy kilka instrukcji, z czego jedna z nich wygeneruje błąd, a kolejn się zakończy sukcesem i dopiero wtedy skorzystamy ze zmiennej @@ERROR to ta zwróci wartości 0.


Poniżej kod z nieprawidłowym wykorzystaniem zmiennej @@ERROR



Zmienna @@ERROR zwraca wartość zero, ponieważ polecenie: " PRINT 'INSERT INTO HR.Employees (EmployeeID) VALIES (100);' " wykonało się bez żadnego błędu.


Poniżej już prawidłowe zastosowanie zmiennej @@ERROR:



Co oznacza wygenerowany numer błędu mozna sprawdzić w słowniku SYSMESSAGES.



RAISERROR


Procedura RAISERROR umożliwia wywołanie błędu w kodzie, najczęściej używa się jej do wywołania kontrolowanego błędu w aplikacji.



SP_ADDMESSAGE


Przy użyciu procedury AP_ADDMESSAGE dodajemy własne komunikaty. Muszą one posiadać numer nie mniejszy niż 50001 i mogą być określone dla danego języka.



W przypadku pomyłki i chęci dodania nowego komunikatu o tym samym numerze otrzymamy komunikat o błędzie:



Zakładając potrzebę ponownego wykorzystania danego numeru kominukatu, poprzedni możemy usunąć za pomocą procedury SP_DROPMESSAGE



TRY CATCH


Blok TRY jest definiowany przez polecenia BEGIN TRY i END TRY, w którym umieszcza się cały kod, który należy objąć sprawdzeniem.


Blok CACTH definiowany jest w podobny sposób poprzez polecenia BEGIN CATCH i END CATCH, jest on uruchamiany jeśli blok TRY wygeneruje błąd.


Poniżej przykład kiedy w bloku TRY instrukcje wykonały się prawidłowo, wtedy blok CATCH się nie uruchamia, w związku zczym na konsoli widzimy komunikat o powodzeniu, pochodzący z bloku TRY.



Natomiast poniżej kod, gdzie w bloku TRY wygenerowany został błąd, polegający na próbie dzielenia przez zero. Blok TRY wtedy przerywa swoje działanie i uruchamiany jest kod znajdujący się w bloku CATCH.



 


 

Przyjdź do nas na szkolenie z baz danych SQL Server! Mamy szereg szkoleń w ofercie: SQL, T-SQL, tuning, administracja i wiele innych. Sprawdź dostępne szkolenia SQL Server
Zapisz się do newslettera aby otrzymywać najnowsze świeżynki pojawiające się na blogu! Zapisz się do newslettera