Hola que tal, por que no haces que el SP regrese el valor directo sin el OUTPUT.
    
Código SQL:
Ver original- ALTER PROCEDURE [dbo].[SP_Output] 
-     (@id INT) 
-     AS 
-   
-      DECLARE @mensaje VARCHAR(200) output  
-   
-     DELETE FROM T_Competencia 
-     WHERE ID=@id AND ID  NOT IN (SELECT DISTINCT id_competencia FROM t_gruporelacion) 
-       
-     IF @@rowcount > 0 
-     BEGIN 
-             SELECT @mensaje='Se borro la tienda con ID: ' + CONVERT(VARCHAR(10),@id) 
-     END 
-     ELSE 
-     IF @ID NOT IN(SELECT ID FROM T_Competencia) 
-            SELECT @mensaje='La tienda no existe' 
-     ELSE 
-            SELECT @mensaje='Error: La tienda tiene relacion con ID ' + CONVERT(VARCHAR(10),@id) 
En C#, lo que hago es que lo leo en el READER y con eso muestro la información 
