Hataları TRY & CATCH ile yakala!

SQL Server'da Fonksiyonlar ve Saklı Yordamlar Yazma

Meghan Kwartler

IT Consultant

Hataları yönetmeli misin, yönetmemeli mi?

Hata yönetimi nedir?

  • Hataları öngörme, yakalama ve çözme
  • Normal yürütme akışını korur
  • Başlangıç tasarımına entegre edilir

Hata yönetimi olmazsa ne olur?

  • Ani kapanma ya da yürütmenin durması
  • Bağlamdan yoksun, genel hata mesajları
SQL Server'da Fonksiyonlar ve Saklı Yordamlar Yazma

Haydi TRY edelim

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 ........
SQL Server'da Fonksiyonlar ve Saklı Yordamlar Yazma

Şimdi CATCH zamanı

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
SQL Server'da Fonksiyonlar ve Saklı Yordamlar Yazma

Bana HATA'yı göster...

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
SQL Server'da Fonksiyonlar ve Saklı Yordamlar Yazma

THROW vs RAISERROR

THROW

  • SQL Server 2012'de tanıtıldı
  • Basit ve kullanımı kolay
  • Sonrasındaki ifadeler ÇALIŞTIRILMAZ

RAISERROR

  • SQL Server 7.0'da tanıtıldı
  • Yeni bir hata üretir ve özgün hatanın ayrıntılarına (ör. hatanın ilk oluştuğu satır numarası) erişemez
  • Sonrasındaki ifadeler çalıştırılabilir
SQL Server'da Fonksiyonlar ve Saklı Yordamlar Yazma

Sıra sende: CATCH!

SQL Server'da Fonksiyonlar ve Saklı Yordamlar Yazma

Preparing Video For Download...