Why would you use raw SQL over a STP ? Here is a better example
CREATE PROCEDURE n (
@parameter INT
)
AS
BEGIN TRANSACTION
INSERT INTO x (n,...) VALUES (@parameter,...)
IF @@ <> 0
BEGIN
SELECT -1 AS ErrNo, 'Failed to insert into x' AS Message
ROLLBACK TRANSACTION
RETURN -1
END
ELSE
BEGIN
SELECT 0 AS ErrNo, 'Success' AS Message, @@IDENTITY AS xID
COMMIT TRANSACTION
RETURN @@IDENTITY
END