У меня проблема с получением значения выходного параметра при выполнении хранимой процедуры с использованием SqlCommand. У меня нет проблем с выходным параметром, когда я выполняю хранимую процедуру не из кода C#, а из SQL Server Management Studio. Вот фрагмент из моих C# код:C# SqlCommand, XmlReader и параметр вывода
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]. После того, как вы выполнили запрос, чтобы увидеть его значение? – Tombala
О, я думал, что эта строка «sqlCmd.Parameters.AddWithValue (« @ rest », rest) .Direction = ParameterDirection.Output;" автоматически приведет к вставке значения в переменную покоя. Спасибо за сообщение, он решил мою проблему. – Konrad