Bij het aanroepen van een opgeslagen procedure in een C#-programma is een vreemde uitzonderingsvolgorde[3]: de eigenschap Size, een ongeldige grootte van 0.
De opgeslagen procedure met dit probleem wordt gekenmerkt door de aanwezigheid van uitparameters van het type varchar of nvarchar
De definitie van deze parameter op het moment van oproep is vergelijkbaar met SqlParameter para = nieuwe SqlParameter("@paraname", DBType.String);
Workaround: De outparameter moet een opgegeven lengte hebben, dus deze moet als volgt worden geïnitialiseerd: SqlParameter para = nieuwe 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 kopiëren
|