调用C#程序中存储过程时,抛出奇怪的异常 String[3]: the Size property has an invalid size of 0.
出现该问题的存储过程有一个特征,就是存在 Varchar 或者 Nvarchar 类型的 out 参数
调用时对该参数的定义类似于
SqlParameter para = new SqlParameter("@paraname", DBType.String);
解决办法:该out参数必须有一个指定的长度,因此,应进行类似下面的初始化:
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);
复制代码
|