我尝试使用带有输出参数的SqlCommand
来调用存储过程。呼叫成功完成,我得到了结果。
当我尝试从输出参数中访问值时偶然发现
时获得结果后出现问题SqlParameter
未包含在集合请注意,这种情况不会一直发生,有时它会发生,有时它不会发生(偶尔发生,这使得很难找到原因)。
这只发生在我们的产品环境中(开发和测试无法重新创建它)。
EX:
With _objCmd
.CommandText = "MyStoredProcName"
.CommandType = CommandType.StoredProcedure
.Parameters.Add("@p_status", SqlDbType.Int).Direction = ParameterDirection.Output
.Parameters.Add("@p_msg", SqlDbType.NVarChar, -1).Direction = ParameterDirection.Output
.Parameters.Add("@p_searchusing", SqlDbType.NVarChar, -1).Value = BlankToNull(SearchDrugUsing)
End With
// my code execution happens here and returns results
_retcode = CType(String.Concat(_objCmd.Parameters("@p_status").Value, ""), Integer)
_retmsg = CType(String.Concat(_objCmd.Parameters("@p_msg").Value, ""), String)
注意:使用SqlDataAdapter
和fill方法映射存储过程结果,并尝试从SqlCommand
访问输出参数。
当我评论输出参数代码行时......它根本没有发生......
非常感谢任何帮助。
答案 0 :(得分:0)
没关系,我能解决这个问题。它与访问变量(sqlcommand)的范围泄漏有关,因为它被声明为共享变量。因此,当越来越多的线程访问sqlcommand对象时,它会偶尔抛出异常。让它独一无二,修复一切。