2011-10-17 51 views
18

Estoy usando un procedimiento almacenado para insertar algún valor en la tabla.ExecuteNonQuery() devuelve -1 siempre

CREATE PROCEDURE [dbo].[Sp_InsertValue] 
@Val1 as nvarchar(50) 
@Val2 as nvarchar(50) 
as 
BEGIN 
    IF NOT EXISTS(SELECT * FROM @mytable WHERE [email protected]) 
    INSERT INTO @mytable VALUES(@VAL2) 
END 

estoy usando ExecuteNonQuery() para llamar a este procedimiento almacenado en ASP.NET con C#. Funciona bien, sin problemas, inserta valores si no existen. El problema es que cmd.ExecuteNonQuery() siempre devuelve -1. Supongo que si se inserta un registro, debería devolver 1 y 0 si no, ¿verdad?

+0

cuando ejecuta este procedimiento en la ventana de consulta del servidor sql ¿puede ver los mensajes actualizados de registros en el panel de resultados? y también intente devolver las filas afectadas agregando esto a la última línea del procedimiento - Return @@ Rowcount – Lingaraj

Respuesta

36

Compruebe que no tiene "SET NOCOUNT ON" en su procedimiento almacenado. Esto detendrá la cantidad de filas de afecto que se devolverán. Literalmente 'NoCount' está activado.

La respuesta predeterminada siempre será '-1' en esta situación.