2013-05-09 7 views
1

У меня проблема с получением значения выходного параметра при выполнении хранимой процедуры с использованием 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.

+3

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

+0

О, я думал, что эта строка «sqlCmd.Parameters.AddWithValue (« @ rest », rest) .Direction = ParameterDirection.Output;" автоматически приведет к вставке значения в переменную покоя. Спасибо за сообщение, он решил мою проблему. – Konrad

ответ

0

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

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