Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

SQL Server:Ponowne zgłoszenie wyjątku z oryginalnym numerem wyjątku

Możesz to zrobić ponownie w ten sposób:

..
END TRY
BEGIN CATCH
    DECLARE @errnum int;
    SELECT @errnum = ERROR_NUMBER();
    RAISERROR (@errnum, 16, 1);
END CATCH

Jednak najprawdopodobniej stracisz znaczenie z powodu symboli zastępczych %s itp. w wierszach sys.messages dla ERROR_NUMBER()

Możesz zrobić coś takiego, aby dołączyć numer i ponownie wyrzucić oryginalną wiadomość

..
END TRY
BEGIN CATCH
    DECLARE @errnum nchar(5), @errmsg nvarchar(2048);
    SELECT
        @errnum = RIGHT('00000' + ERROR_NUMBER(), 5),
        @errmsg = @errnum + ' ' + ERROR_MESSAGE();
    RAISERROR (@errmsg, 16, 1);
END CATCH

Pierwsze 5 znaków to oryginalna liczba.

Ale jeśli masz zagnieżdżony kod, otrzymasz „00123 00456 Error text”.

Osobiście zajmuję się tylko numerami wyjątków SQL, aby oddzielić moje błędy (50000) od błędów silnika (np. brakujące parametry), w których mój kod nie działa.

Na koniec możesz przekazać mu wartość zwracaną.

Zadałem pytanie na ten temat:Obsługa błędów SQL Server:wyjątki i umowa klient bazy danych



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ROUND() Przykłady w SQL Server

  2. Wywołanie procedury składowanej z typem danych XML

  3. Zapytanie, aby znaleźć liczbę parametrów w procedurze przechowywanej lub funkcji w serwerze Sql?

  4. Zwróć listę wszystkich wyzwalaczy serwera w SQL Server

  5. Jak używać TO_Char() w SQL Server 2008