2011-10-17 7 views
18

J'utilise une procédure stockée pour insérer une valeur dans la table.ExecuteNonQuery() renvoie -1 toujours

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 

J'utilise ExecuteNonQuery() pour appeler cette procédure stockée dans ASP.NET en utilisant C#. Cela fonctionne bien, pas de problèmes, il insère des valeurs si elles n'existent pas. Le problème est que cmd.ExecuteNonQuery() renvoie toujours -1. Je prévois si un enregistrement est inséré, il devrait retourner 1, et 0 sinon, non?

+0

et essayez également de retourner les lignes affectées en ajoutant ceci à la dernière ligne de la procédure - Retour @@ Rowcount – Lingaraj

Répondre

36

Vérifiez que vous n'avez pas "SET NOCOUNT ON" dans votre procédure stockée. Cela arrêtera le nombre de lignes d'affectations renvoyées. Littéralement "NoCount" est activé.

La réponse par défaut sera toujours «-1» dans cette situation. Lorsque vous exécutez cette procédure dans la fenêtre de requête du serveur SQL, pouvez-vous voir les messages mis à jour dans le volet de résultats?

Questions connexes