J'utilise la procédure stockée suivante de mon SQL Server base de données 2008 pour renvoyer une valeur à mon C# -ProgrammeSQL Server 2008 stocké Proc retourne soudainement -1
ALTER PROCEDURE [dbo].[getArticleBelongsToCatsCount]
@id int
AS
BEGIN
SET NOCOUNT ON;
DECLARE @result int;
set @result = (SELECT COUNT(*) FROM art_in_cat WHERE child_id = @id);
return @result;
END
J'utilise un SQLCommand-Object pour appeler cette Stored Procédure
public int ExecuteNonQuery()
{
try
{
return _command.ExecuteNonQuery();
}
catch (Exception e)
{
Logger.instance.ErrorRoutine(e, "Text: " + _command.CommandText);
return -1;
}
}
Jusqu'à récemment, tout fonctionne correctement. Tout à coup, la procédure stockée est retournée -1. Au début, je soupçonnais, que l'ExecuteNonQuery-Command aurait causé et Exception, mais en passant par la fonction, il montre qu'aucune exception n'est levée et la valeur de retour vient directement de retour _command.ExecuteNonQuery();
j'ai vérifié les paramètres suivants et ils étaient comme prévu: - objet de connexion a été défini sur la base de données correcte avec des valeurs d'accès correct - le paramètre pour la SP était là et contenait le type, la direction et la valeur
Puis j'ai vérifié le SP via SQLManager, j'ai utilisé la même valeur pour le paramètre comme celui pour lequel mon C# apporte -1 comme résultat (btw.J'ai vérifié d'autres valeurs de paramètres dans mon programme C 'et ils ont retourné -1) mais dans le gestionnaire, le SP renvoie la valeur correcte.
Il ressemble à l'appel de mon C# prog est buggé en quelque sorte, mais je ne reçois pas d'erreur (il est juste le de la SP -1), je ne sais pas où chercher une solution.
Je suppose qu'il veut 'ExecuteReader'? – Kezzer
Je ne pense pas. Sa procédure stockée ne retourne pas un resultset, donc ExecuteNonQuery devrait toujours être approprié sauf si quelque chose me manque. –
Basé sur le SP, il devrait utiliser 'ExecuteScalar'. –