A ver
Declare @Error_num int,
@Severity smallint
INSERT INTO Inscripciones_en_ofertas (Oferta_num, Demandante_num, Data, Motivos_interes)
VALUES (@Oferta_num, @Demandante_num, @Data, @Motivos_interes)
SELECT @Error_num = @@ERROR
/*y esto donde lo aprendiste?
*/
IF (@Error_num<>0)
BEGIN /* esto faltaba */
SELECT @severity = severity
FROM sysmessages
WHERE @Error_num = error
SELECT @severity AS error_severity
END
Ahora, veamos. Bien jugado lo de levantar severity si es que te interesa mostrarle a alguien el error. Pero una vez que termines la depuracion, mejor quitalo, ya que dejar eso dentro de un SP no tendria sentido alguno.
Puedes crear una tabla temporal con CREATE TABLE #(nombre) y poner alli todos los errores y terminar tu sp con un SELECT * FROM #(nombre) pero te recomiendo que luego lo elimines