Når man kaller en lagret prosedyre i et C#-program, har en merkelig unntaksstreng[3]: Size-egenskapen en ugyldig størrelse på 0.
Den lagrede prosedyren som har dette problemet kjennetegnes av tilstedeværelsen av ut-parametere av typen varchar eller nvarchar
Definisjonen av denne parameteren på tidspunktet for kallet er lik som SqlParameter para = ny SqlParameter("@paraname", DBType.String);
Løsning: Ut-parameteren må ha en spesifisert lengde, så den bør initialiseres slik: SqlParameter para = ny SqlParameter ("@paraname", DBType.String, størrelse);
- 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);
Kopier koden
|