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

  • karneson

    karneson

    23 Temmuz 2006
  • jocc talking shit

    jocc talking

    6 NİSAN 2007
  • SRI International

    SRI Internat

    30 NİSAN 2008