The following code...CREATE TABLE mytable (mycolumn int NOT NULL)GOCREATE PROC myprocAS SET XACT_ABORT ON RAISERROR ('My Error', 16, 1) INSERT INTO mytable (mycolumn) VALUES (NULL) INSERT INTO mytable (mycolumn) VALUES (NULL)GOEXEC myproc...gives the following 2 errors...Msg 50000, Level 16, State 1, Procedure myproc, Line 4My ErrorMsg 515, Level 16, State 2, Procedure myproc, Line 5Cannot insert the value NULL into column 'mycolumn', table 'ZCORE.dbo.mytable'; column does not allow nulls. INSERT fails....meaning it continues after the first RAISERROR but stops after the first INSERT which fails when trying to insert NULL into a NOT NULL column. I dont get this. I would like to be able to use XACT_ABORT ON in proc A which calls proc B which raises an error and then proc A will abort the transaction. Now I will have to use TRY/CATCH for every nested proc call. TRY/CATCH is great by the way, thank you very much for that.