@@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.
Procedura RAISERROR umożliwia wywołanie błędu w kodzie, najczęściej używa się jej do wywołania kontrolowanego błędu w aplikacji.
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
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.
Komentarze (0)
Brak komentarzy...