C# SqlCommand, XmlReader и выходной параметр

у меня проблема с получением значения выходного параметра, когда я выполняю хранимую процедуру с помощью SqlCommand. У меня нет проблем с выходным параметром, когда я выполняю хранимую процедуру не из кода C #, а из SQL Server Management Studio. Вот фрагмент моего кода С#:

    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();

Я нашел это: Проблема чтения параметра из сохраненного процедура с использованием c# Я добавил строку, закрывающую ридер, но это не помогло. И какой-то пользователь по ссылке выше использует метод LoadHits, и я не могу найти его ни в MSDN, ни в Google.


person Konrad    schedule 09.05.2013    source источник
comment
Я не вижу, где вы пытаетесь прочитать параметр. Вы действительно проверяли sqlCmd.Parameters[2].Value после выполнения запроса, чтобы увидеть его значение?   -  person Tombala    schedule 09.05.2013
comment
О, я думал, что эта строка sqlCmd.Parameters.AddWithValue(@rest, rest).Direction = ParameterDirection.Output; автоматически приведет к вставке значения в оставшуюся переменную. Спасибо за пост, он решил мою проблему.   -  person Konrad    schedule 09.05.2013


Ответы (1)


Поскольку мой комментарий решил вашу проблему, я решил добавить его в качестве ответа:

Я не вижу, где вы пытаетесь прочитать параметр. Вы действительно проверяли sqlCmd.Parameters[2].Value после выполнения запроса, чтобы увидеть его значение?

person Tombala    schedule 09.05.2013