SQL Error checking in proc

Error checking in proc


USE pubs
GO
CREATE TABLE c (
c char(1))
GO

CREATE PROC test as
BEGIN TRANSACTION
INSERT c VALUES ('X')
    IF (@@ERROR <> 0) GOTO on_error
INSERT b VALUES ('X')  -- Fails reference
    IF (@@ERROR <> 0) GOTO on_error    
COMMIT TRANSACTION
RETURN(0)

on_error:
ROLLBACK TRANSACTION
RETURN(1)