SQL Server på svenska
En svensk blogg om SQL Server, skriven på svenska. Kodexempel, fördjupningar och reflexioner på vad som händer i SQL Server-världen
Försök och fånga


.NET (1) BLOB (1) Bloggen (2) DBA (2) Design (1) Felhantering (1) Installation (1) Optimering (4) Säkerhet (1) SQL Server 2000 (2) SQL Server 2005 (2) SQL Server 2008 (1)


 Thursday, March 27, 2008
« Lagra filer i SQL Server | Main | Undvik SQL Injection med parametriserade... »
Försök och fånga

En för mig välkommen nyhet som introducerades i SQL Server 2005 är felhantering genom TRY/CATCH.

Innan TRY/CATCH såg felhantering typiskt ut något i den här stilen (lite förenklat):

 

--create table tabell (fält varchar(10))

DECLARE @error int
SET @error=0
BEGIN TRAN
INSERT INTO tabell (fält) VALUES('abcde12345abcde12345')
SET
@error=@@error
IF @error>0
BEGIN
      PRINT @error
      ROLLBACK TRAN
      GOTO PROC_EXIT
END

INSERT INTO tabell (fält) VALUES('abcdefghijabcdefghij')
SET
@error=@@error
IF @error>0
BEGIN
      PRINT @error
      ROLLBACK TRAN
      GOTO PROC_EXIT
END

I
NSERT INTO tabell (fält) VALUES('12345678901234567890')
SET
@error=@@error
IF @error>0
BEGIN
      PRINT @error
      ROLLBACK TRAN
      GOTO PROC_EXIT
END

COMMIT TRAN

PROC_EXIT:

Med TRY/CATCH är det kortare och i min mening betydligt mer lättförståligt:

BEGIN TRY
BEGIN TRAN

INSERT INTO tabell (fält) VALUES('12345678901234567890')
      INSERT INTO tabell (fält) VALUES('abcdefghijabcdefghij')
      INSERT INTO tabell (fält) VALUES('abcde12345abcde12345')
COMMIT
TRAN
END TRY
BEGIN CATCH
      IF @@TRANCOUNT>0
            ROLLBACK TRAN
      PRINT ERROR_MESSAGE()
END CATCH

En avgörande skillnad finns mellan "gamla" och "nya" sättet att felhantera: Med TRY/CATCH kastas inga fel till klienten, så det kan definitivt vara läge att slänga in en RAISERROR i sitt CATCH-block.

Intressant?
Andra bloggar om SQL Server, SQL Server 2005, Felhantering

Comments [0]   Kategorier: Felhantering | SQL Server 2005


Top Datorer bloggar
Bloggar.Topplista.se - topplistan med de b�sta bloggarna - l�gg till din blogg du ocks�!
BlogRankers.com
Bloggtoppen.se
Datorer
BloggRegistret.se




Total Posts: 14
This Year: 2
This Month: 0
This Week: 0
Comments: 64