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

  • How Things Are Made

    How Things A

    17 HAZİRAN 2008
  • Attempts at least

    Attempts at

    1 Ocak 2007
  • NYCarspotter

    NYCarspotter

    26 EYLÜL 2011