SORU
28 EYLÜL 2009, PAZARTESİ


Nasıl kullanıcı tanımlı bir işlev bir hata raporu için SQL Server

SQL Server 2008'de kullanıcı tanımlı bir fonksiyon yazıyorum. Çalışırsa RAISERROR deyimi SQL döner eklemeyi denerseniz, her zamanki gibi zam hataları olamaz biliyorum:

Msg 443, Level 16, State 14, Procedure ..., Line ...
Invalid use of a side-effecting operator 'RAISERROR' within a function.

Ama gerçek şu ki, işlevi geçersiz olabilecek bazı girdi alır, ve, eğer varsa, işlevi döndürebilir anlamlı bir değeri yoktur. O zaman ne yapacağım?

Tabii, BOŞ iade olabilir, ama herhangi bir geliştirici işlevi kullanarak bu sorunu gidermek için zor olurdu. Ayrıca sıfıra bölme ya da onun gibi bir şey neden olabilir bu hata iletisi, ama yanıltıcı bir oluşturmak istiyorsunuz. Kendi hata mesajımı bir şekilde rapor etmem mümkün mü?

CEVAP
13 Ocak 2011, PERŞEMBE


Anlamlı bir hata atmak için DÖKME kullanabilirsiniz:

create function dbo.throwError()
returns nvarchar(max)
as
begin
    return cast('Error happened here.' as int);
end

Sql Server bazı yardım bilgilerini gösterir:

Msg 245, Level 16, State 1, Line 1
Conversion failed when converting the varchar value 'Error happened here.' to data type int.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • akalyne

    akalyne

    13 Mayıs 2009
  • Fraser Raft

    Fraser Raft

    9 Mart 2010
  • rtisticsdev

    rtisticsdev

    31 Mayıs 2012