Când se apelează o procedură stocată într-un program C#, o excepție ciudată String[3]: proprietatea Size are o dimensiune invalidă de 0.
Procedura stocată care are această problemă este caracterizată prin prezența parametrilor out de tip varchar sau nvarchar
Definiția acestui parametru la momentul apelului este similară cu SqlParameter para = new SqlParameter("@paraname", DBType.String);
Soluție alternativă: parametrul out trebuie să aibă o lungime specificată, deci ar trebui inițializat astfel: 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);
Cod de copiere
|