首先我在.net类库里调用SQL里的存储过程,该存储过程有两个UniqueIdentifier类型的参数,如shiftID, classID。在存储过程中是用在where条件后的in 条件中的,也就是说是多个shiftid或classid通过逗号隔开使用,现在我在存储过程中定义shiftID与classID分别为nvarchar(max)。
那么在.net库中调用的时候首先获取该参数:
string shiftid = Tools.ToString(HttpContext.Request.Params["shiftid"]); string classid = Tools.ToString(HttpContext.Request.Params["ClassId"]);
然后加入到SQL参数集合中:
paraList.Add(DBHelper.GetParameter("@ShiftID", SqlDbType.NVarChar, 4000, (shiftid != string.Empty ?(object)Tools.QuoteSplitString(shiftid):DBNull.Value)));
paraList.Add(DBHelper.GetParameter("@ClassID", SqlDbType.NVarChar, 4000, (classid != string.Empty ? (Object)Tools.QuoteSplitString(classid) : DBNull.Value)));
这里的Tools.QuoteSplitString方法是一个公共方法,它主要把如2d01aaab-4c66-475f-b8c3-8f9da4d648cf,b0a067e3-dc45-442a-8e96-dc9d135f970f 转换成“‘2d01aaab-4c66-475f-b8c3-8f9da4d648cf’,‘b0a067e3-dc45-442a-8e96-dc9d135f970f’”这种字符串类型,那么现在cmd执行SQL的时候报将字符串转换UniqueIdentifier类型失败,这是SQL中报的错。
总体来说就是:使用,NET库,调用SQl存储过程中如何把用逗号隔开的字符串参数传到是nvarchar类型的SQL语句中
添加回答
举报
0/150
提交
取消