try ... catch v sql 2005

Pozdrav vsem,

nov error handling v sql 2005 se mi zdi precejšen napredek predvsem zato, ker ni potrebno preverjat @@error za vsakim

stavkom in ker vrne napako tudi v primerih, ko je sql 2000 zatajl, recimo, če v polje int po pomoti trpaš varchar.

Ni mi pa čisto jasno kako je z vračanjem exception na stran odjemalca. Kolikor sem prebral je potrebno za vračanje napake

poskrbeti v catch bloku. Naredil sem dva testa, če sem v sp uporabil tabelo, ki ne obstaja sem dobil exception tudi na

klienta, v primeru pa, da sem želel zapisati isti podatek v polje z unikatnim indeskom pa exception na klientu nisem dobil.

Klient je v NET 2.0.

V catch blok sem uporabil samo:

BEGIN CATCH

SELECT
        ERROR_NUMBER() AS ErrorNumber,
        ERROR_SEVERITY() AS ErrorSeverity,
        ERROR_STATE() AS ErrorState,
        ERROR_PROCEDURE() AS ErrorProcedure,
        ERROR_LINE() AS ErrorLine,
        ERROR_MESSAGE() AS ErrorMessage;

END CATCH

Prosim za mnenje ali še bolje kakšen primer kako se try catch v sql 2005 optimalno uporablja tako, da bi na klienta dobil vse izjeme.

A moram v catch bloku uporabiti RAISERROR?

Hvala

Tomaž

 

Avtor: tomaz_sres, objavljeno na portalu SloDug.si (Arhiv)

Leave a comment

Please note that we won't show your email to others, or use it for sending unwanted emails. We will only use it to render your Gravatar image and to validate you as a real person.

spirit1
spirit1 - torek, 14. avgust 2007

ja moras uporabit raiserror.raiserror v sql-u je ista stvar kot throw na klientu. http://blogs.msdn.com/tomholl/archive/2007/08/01/mapping-sql-server-errors-to-net-exceptions-the-fun-way.aspx