【发布时间】:2013-05-09 14:47:24
【问题描述】:
当我使用 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 中找不到它。
【问题讨论】:
-
我看不到您试图读取参数的位置。执行查询后是否真的检查了 sqlCmd.Parameters[2].Value 以查看其值?
-
哦,我还以为这行"sqlCmd.Parameters.AddWithValue("@rest", rest).Direction = ParameterDirection.Output;"将自动导致将值插入到剩余变量中。谢谢你的帖子,它解决了我的问题。
标签: c# sql-server xmlreader sqlcommand output-parameter