59 votes

La propriété Size a une taille invalide de 0

Je travaille sur un réseau social, une de mes procédures renvoie une sortie VARCHAR. Voici donc ce que j'ai écrit :

SqlParameter job1 = cmd2.Parameters.Add("@job", SqlDbType.VarChar);
job1.Direction = ParameterDirection.Output;

Cependant, cette erreur apparaît :

String[1] : la propriété Size a une taille invalide de 0.

104voto

marc_s Points 321990

Vous devez définir une longueur lorsque vous spécifiez l'option varchar paramètre :

SqlParameter job1 = cmd2.Parameters.Add("@job", SqlDbType.VarChar, 50);

Vous devez utiliser la même longueur que celle définie dans votre procédure stockée SQL Server.

Et, en outre, si votre procédure stockée n'a pas non plus de longueur définie (quelque chose comme @job VARCHAR OUTPUT ) - alors vous avez défini un varchar chaîne de 1 caractère de longueur ......

8voto

Oui, il faut définir la longueur pour varchar / nvarchar type de données comme ci-dessous.

cmd.Parameters.Add("@Description", SqlDbType.VarChar, 150).Direction =
    ParameterDirection.Output;

1voto

tno2007 Points 41

Si vous utilisez Dapper, vous avez passé dans un fichier valeur nulle pour le paramètre, alors que l'entrée attendue était une chaîne de caractères.

Pour trouver la valeur incriminée et son paramètre, inspectez l'objet DynamicParameters de Dapper pendant une session de débogage et ouvrez les paramètres auxquels l'index fait référence.

enter image description here

0voto

ChrisC Points 199

Attribuez une chaîne vide au paramètre de sortie avant d'appeler la procédure stockée et cela devrait éliminer l'erreur :

job1.Value = string.Empty ;

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X