当我使用 SqlCommand 执行存储过程时,接收输出参数的值时遇到问题。当我不是从 C# 代码而是从 SQL Server Management Studio 执行存储过程时,输出参数没有问题。这是我的 C# 代码片段:
rest = -1;
XmlDocument res = new XmlDocument();
res.LoadXml("<Result><ErrCode>0</ErrCode></Result>");
using (SqlCommand sqlCmd = Params.SqlCn.CreateCommand())
{
sqlCmd.CommandType = CommandType.StoredProcedure;
sqlCmd.CommandText = "dbo.wss_doProductAdd_sp";
sqlCmd.Parameters.Clear();
sqlCmd.Parameters.Add(new SqlParameter("@quantity", ilosc));
sqlCmd.Parameters.Add(new SqlParameter("@addToLog", addToLog));
sqlCmd.Parameters.AddWithValue("@rest", rest).Direction = ParameterDirection.Output;
XmlReader xr = sqlCmd.ExecuteXmlReader();
XmlNode newNode = res.ReadNode(xr);
while (newNode != null)
{
res.DocumentElement.AppendChild(newNode);
newNode = res.ReadNode(xr);
}
xr.Close();
Params.SqlCn.Close();
我发现了这一点: Problem reading out parameter from stored procedure using c# 我添加了一行关闭阅读器,但没有帮助。上面链接中的一些用户使用 LoadHits 方法,我在 MSDN 或 Google 中找不到它。