Beim Aufruf einer gespeicherten Prozedur in einem C#-Programm hat eine seltsame Ausnahme String[3]: Die Size-Eigenschaft eine ungültige Größe von 0.
Das gespeicherte Verfahren mit diesem Problem ist durch das Vorhandensein von Out-Parametern vom Typ varchar oder nvarchar gekennzeichnet
Die Definition dieses Parameters zum Zeitpunkt des Aufrufs ist ähnlich wie SqlParameter para = neuer SqlParameter("@paraname", DBType.String);
Workaround: Der Out-Parameter muss eine bestimmte Länge haben, daher sollte er so initialisiert werden: SqlParameter para = neuer 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 kopieren
|