TRY & CATCH diese Fehler!

Funktionen und Stored Procedures in SQL Server schreiben

Meghan Kwartler

IT Consultant

Fehler behandeln – oder nicht

Was ist Fehlerbehandlung?

  • Erkennen, abfangen und beheben von Fehlern
  • Hält den normalen Ausführungsfluss aufrecht
  • Von Anfang an ins Design eingebaut

Was passiert ohne Fehlerbehandlung?

  • Plötzlicher Abbruch oder Stopp der Ausführung
  • Allgemeine Fehlermeldungen ohne hilfreichen Kontext
Funktionen und Stored Procedures in SQL Server schreiben

Lass uns TRYen

ALTER PROCEDURE dbo.cusp_TripSummaryCreate
  @TripDate nvarchar(30),
  @RideHrs numeric,

@ErrorMsg nvarchar(max) = null OUTPUT
AS BEGIN BEGIN TRY INSERT INTO TripSummary (Date, TripHours) VALUES (@TripDate, @RideHrs) END TRY ........
Funktionen und Stored Procedures in SQL Server schreiben

Zeit zum CATCHen

ALTER PROCEDURE dbo.cusp_TripSummaryCreate
  @TripDate nvarchar(30),
  @RideHrs numeric, 
  @ErrorMsg nvarchar(max) = null OUTPUT
AS
BEGIN
  BEGIN TRY
      INSERT INTO TripSummary (Date, TripHours)
      VALUES (@TripDate, @RideHrs)
  END TRY
  BEGIN CATCH
      SET @ErrorMsg = 'Error_Num: ' +
      CAST (ERROR_NUMBER() AS varchar) +
      ' Error_Sev: ' + 
      CAST(ERROR_SEVERITY() AS varchar) +  
      ' Error_Msg: ' + ERROR_MESSAGE()
  END CATCH
END
Funktionen und Stored Procedures in SQL Server schreiben

Zeig mir den ERROR...

DECLARE @ErrorMsgOut as nvarchar(max)

EXECUTE dbo.cusp_TripSummaryCreate 
        @TripDate = '1/32/2018',
        @RideHrs = 100,
        @ErrorMsg = @ErrorMsgOUT OUTPUT

SELECT @ErrorMsgOut as ErrorMessag
ErrorMessage
-------------------------------------------------
Error_Num: 241 Error_Sev: 16 
Error_Msg: Conversion failed when converting date and/or time from 
           character string
Funktionen und Stored Procedures in SQL Server schreiben

THROW vs. RAISERROR

THROW

  • Eingeführt in SQL Server 2012
  • Einfach und leicht zu nutzen
  • Nachfolgende Anweisungen werden NICHT ausgeführt

RAISERROR

  • Eingeführt in SQL Server 7.0
  • Erzeugt einen neuen Fehler und kann nicht auf Details des ursprünglichen Fehlers zugreifen (z. B. Zeilennummer des ersten Auftretens)
  • Nachfolgende Anweisungen können ausgeführt werden
Funktionen und Stored Procedures in SQL Server schreiben

Jetzt bist du dran zu CATCHen!

Funktionen und Stored Procedures in SQL Server schreiben

Preparing Video For Download...