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ž
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