Lors de l’appel d’une procédure stockée dans un programme C#, une exception étrange String[3] : la propriété Taille a une taille invalide de 0.
La procédure stockée qui présente ce problème se caractérise par la présence de paramètres out de type varchar ou nvarchar
La définition de ce paramètre au moment de l’appel est similaire à SqlParameter para = new SqlParameter(« @paraname », DBType.String) ;
Solution de contournement : Le paramètre de sortie doit avoir une longueur spécifiée, il doit donc être initialisé ainsi : SqlParameter para = new SqlParameter(« @paraname », DBType.String, size) ;
- DBHelper db = new DBHelper();
- SqlParameter[] param = new SqlParameter[5];
- param[0] = new SqlParameter("ID", SqlDbType.Int);
- param[0].Direction = ParameterDirection.Output;
- param[1] = new SqlParameter("UserID", userid);
- param[2] = new SqlParameter("UserName", SqlDbType.NVarChar, 50);
- param[2].Direction = ParameterDirection.Output;
- param[3] = new SqlParameter("Password", pass);
- param[4] = new SqlParameter("Result", SqlDbType.Int);
- param[4].Direction = ParameterDirection.Output;
- var spc = db.Crm_ExecuteNonQueryReturns("pUserLogin",param);
Code de copie
|